Experten Tipp zu internen Oxid redirects

Guten Tag zusammen.

Unser aktueller Shop wird mit komplett neu erstellt.

Dabei werden wir auch die Kategorien unseres Shops grundlegend ändern ( bei gleichen Artikeln ), was u.a. zur Folge hat, dass die SEO Links nicht mehr dieselben sein werden/sollen.

Als Alternative zum Befüllen der HTACESS mit 301 Weiterleitungen, steht im Raum, dass wir die Artikel samt Kategorien übernehmen, dann die Kategorien abändern, so dass OXID intern die Weiterleitungen setzt und keine gesonderten 301 in die htacess müssen.

Ich bin zu wenig Profi um diesen Weg einordnen zu können. Hat das ggfls. Nachteile, die ich nicht berücksichtige?

Würde mich über ein paar Rückmeldungen zu diesem Vorhaben freuen!

Wünsche viel Gesundheit!

1 Like

ich würde mich selbst nicht als Profi bezeichnen, wenn es um Umzüge und die damit verbundenen Weiterleitungen geht, aber eine prall befüllte htaccess Datei:

  1. wirkt sich negativ auf die Ladezeit von allen Seiten aus, da die Redirects bei jedem Seitenaufruf abgearbeitet werden müssen, bevor es zur eigentlichen Verarbeitung des Aufrufes durch den Shop kommt.
  2. verursacht CPU Last, was einige Hoster gar nicht mögen. Ich habe mal einen Shop betreut, bei dem einige zusätzliche Regeln in der htaccess hinterlegt wurden (mittlerer dreistelliger Bereich), da hat sich der Hoster nach einer Woche gemeldet und geschrieben, dass die Regeln wegen hoher CPU Auslastung auskommentiert wurden und wir diesen Quatsch in der Zukunft bitte lassen mögen. Und dabei war das eins von den teuersten Tarifen bei diesem Hoster.
    (hab spontan was zu diesem Thema gefunden: Does the number of .htaccess rules impact performance and scalability? - StrategiQ)

Basierend auf meinen Erfahrungen, würde ich die Weiterleitungen vom Shop durchführen lassen.
Wie genau das in der oxseo Tabelle zu bewerkstelligen wäre, weiß ich leider nicht, aber auf diesem Wege könnte man die alten URL mit der Zeit auch entfernen. Da gibts nämlich eine “oxhits” Spalte in der Tabelle, wo die Aufrufe der URL gezählt werden. So könnte man periodisch nach 1-2 Monaten die Zähler der alten URLs auf 0 setzen und nach 1-2 weiteren Monaten gucken, welche URLs keine Aufrufe erhalten haben und sie dann beseitigen.

Wenn der Shop ganz zufällig aus einem Unterordner in den Webroot umgezogen ist (von www.firma.de/shop/ auf www.firma.de), könnte man in dem alten Unterordner auch eine reine weiterleitungs-htaccess oder ein Weiterleitungs-Script mit einer eigenen Datenbank installieren, so dass der Shop gar nichts mehr damit zu tun hätte. Ggf. sowas wie yourls.

Aber, wie gesagt: ich bin kein Profi, bin nur ein mal auf diesem Gebiet auf die Nase gefallen.
Schauen wir mal, was die Profis dazu schreiben.

Ich will die Situation gerne noch etwas genauer erläutern.

Letztendlich werden unsere Domain beibehalten, wobei wir die neue Seite in einer Subdomain programmieren und später dann transferieren.

Beispiel für aktuellen Pfad:
Domain/Hersteller/Kategorie/Produkt

Beispiel für neuen Pfad:
Domain/Kategorie/Hersteller/Produkt

Wir könnten also hingehen und die Daten samt Kategorien übernehmen und dann im Anschluss die Kategorien ändern. So würde OXID die Redirects intern setzen.

Es bleibt aber die Frage, ob diese Variante Nachteile hat, bzw. welche Alternativen es noch zu Redirects in der HTACCESS gibt?

Wäre toll, wenn ein Profi hier etwas zu sagen kann.

Evtl. auch was für euch: GitHub - proudcommerce/psRedirect404: Redirect on 404 eror pages with levenshtein algorithm.

Dafür gibt’s die oxseohistory. Ihr könnt diese Tabelle im neuen Shop einfach mit den alten Werten befüllen. Eigentlich ist das der bessere Weg, als die .htaccess vollzuknallen, wie Marat oben schon erwähnt hat:

1 Like

Freue mich sehr über die Anregungen für unsere Problematik!

Beim Erstellen der neuen Kategorien, in einem Test-Shop, stelle ich fest, dass ich doch einige alte Kategorien löschen und einige Neue hinzufügen werde. Auch im Kategorie Baum wird einiges verändert. Alles in allem werden die Kategorien also schon ordentlich anders als zuvor.

Nun die entscheidende Frage:

Option 1 war ja, Oxid die internen Redirects selbst erledigen zu lassen.
Würde bedeuten ich importiere die Daten samt Kategorien in den neuen Shop und ändere dann die Kategorien auf die neue Struktur um, so dass Oxid die redirects intern setzt?

Option 2 - Wäre es nicht besser ( soll wirklich eine Frage sein ), wenn ich den neuen Shop mit den neuen Kategorien erstelle, dann nur die Artikel ohne Kategorien rüberhole und diese dann den neuen Kategorien zuordne?
Wenn ja, wie manage ich dann den Übergang der alten SEO Links zu den Neuen.
Geht das ggfls. mit dem Hinweis, die oxseohistory zu nutzen und entsprechend zu befüllen?
Da ich mich damit nicht auskenne, wäre das “die Frage” für mich.

Hallo proq,

Neue Artikel nach neuer Struktur anlegen,
wenn die Artikelnummer gleich bleibt, aufgrund dessen einen Export der alten SEO Daten fahren, die OXIDs der alten Daten gegen die neu erzeugten OXIDs aufgrund Artkkelnummernmatching ersetzen und dann die alten Datenin den neuen Shop einlesen. Damit regelt OXID es sannauf eigene Art, er findet die alte URL, hat dann aber die passende OXID des neuen Artikels und gibt einen 301 Redirect mit den aktuellen Daten raus.

Gruss
Marcel

1 Like

@ [vanilla_thunder]
Ab welcher Anzahl von Redirects siehst du das als Problem für die Perfomance?

das kann ich so leider nicht pauschal sagen.
Einfache RewriteRules von /a.html nach /b.html brauchen vergleichsweies wenige Ressourcen,
Regeln mit RegEx Patterns (das Zeug mit ^(.*)\/(.+)$ $1 $2 drin) können dagegen die CPU-Megaherze wie warme Semmeln verspeisen.

Wenn du bereits eine htaccess mit vielen Weiterleitungen hast, könnte man die Ladezeit mit und ohne Weiterleitungen in der htaccees messen.
Dann kann man entscheiden, ob man mit der Ladezeit “einverstanden” ist.
Aber ich würde immer die saubere Lösung mit der seo Tabelle bevorzugen, alleine weil sie sich nicht auf die Ladezeit aller Aufrufe niederschlägt, wie htaccess das macht (und zwar nicht nur reine Seitenaufrufe, sondern auch Bilder, CSS, JS Dateie, etc)

Wie kann ich “sicher” prüfen, ob ein 301 Redirect aus einer htaccess entfernt werden kann, weil unterdessen überflüssig?

Ist es richtig, dass der 301 Redirect von jedem Browser nur einmal aufgerufen werden muss, um anschließend entfernt werden zu können? Wenn dem so ist, gibt es doch sicher Tools dazu.
So kann ich die htaccess redirects ja beruhigt nutzen, da ich sie im Grunde kurze zeit später wieder löschen kann. Wo ist hier mein Denkfehler?

Und noch eine weitere Frage:
Wenn ich einen Redirect in der htaccess ausdokumentiere, belastet er dann noch das System?

Ein 301 wird solange ausgegeben, wie ein Client die alte URL anfragt. Somit könnte selbiges in der Theorie noch nach Monaten passieren.

Zur 2. Frage, ja auch Kommentare müssen ja geparsed werden und somit belasten sie anteilig das System.

Gruss
Marcel

Dem entnehme ich, dass ich das Redirect erst dann aus der htaccess entfernen kann, wenn ich die alte Domain aus google search entferne. Korrekt?

Die Search Console von Google hat zwar was mit der Indexierung zu tun (Sitemap), heißt aber nicht, dass wenn man den Eintrag entfernt, Google alle alten Referenzen löscht.

Gruss
Marcel

Hallo!
ich quäle mich heute schon den ganzen Tag mit dieser oxseohistory Tabelle rum!
Ich habe einen Wordpress/Equid Shop zu OXID umgezogen und versuche jetzt die Urls umzubiegen!
Einmal ist es mir gelungen mit der insert Methode aber die Urls sind so lang und mit Umlauten gespickt!
Ich habe oxident jetzt von char(32) auf char(255) aufgebohrt und das MD% Verschlüsselungsverfahren weggelassen damit ich sehe was in die Datenbank eingetragen wird.
Beispiel: http://www.example.de/Comtè-Charles-Arnaud-AOP-30-Monate-ab-200g-p97133072/ soll zu Comtè Charles Arnaud AOP 30 Monate | online kaufen
Eintrag in oxseohistory
‘INSERT INTO oxseohistory (OXOBJECTID, OXIDENT, OXSHOPID, OXLANG) VALUES (‘0097133072’,‘Comtè-Charles-Arnaud-AOP-30-Monate-ab-200g-p97133072/’, ‘1’, 0);’

Hier ein Eintrag der funktioniert:
‘INSERT INTO oxseohistory (OXOBJECTID, OXIDENT, OXSHOPID, OXLANG) VALUES (‘0001070383’,MD5(‘cravanzina-alta-langa/’), ‘1’, 0);’

Leider funktioniert psRedirect404 in Version6.2.3 auch nicht.
Fehlermeldung:
‘[2021-01-29 16:09:11] OXID Logger.ERROR: Class ‘OxidEsales\EshopCommunity\Internal\Application\ContainerFactory’ not found ["[object] (Error(code: 0): Class ‘OxidEsales\EshopCommunity\Internal\Application\ContainerFactory’ not found at /srv/www/kaese-shop/public/oxid/source/modules/pc/redirect404/Application/Core/SeoLevenstein.php:130)\n[stacktrace]\n#0 /srv/www/kaese-shop/public/oxid/source/modules/pc/redirect404/Application/Core/SeoLevenstein.php(80): ProudCommerce\Redirect404\Application\Core\SeoLevenstein->_getSeoUrls()\n#1 /srv/www/kaese-shop/public/oxid/source/modules/pc/redirect404/Application/Core/Utils.php(46): ProudCommerce\Redirect404\Application\Core\SeoLevenstein->searchUrl()\n#2 /srv/www/kaese-shop/public/oxid/source/overridablefunctions.php(61): ProudCommerce\Redirect404\Application\Core\Utils->handlePageNotFoundError()\n#3 /srv/www/kaese-shop/public/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/SeoDecoder.php(241): error_404_handler()\n#4 /srv/www/kaese-shop/public/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/Config.php(371): OxidEsales\EshopCommunity\Core\SeoDecoder->processSeoCall()\n#5 /srv/www/kaese-shop/public/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/Config.php(471): OxidEsales\EshopCommunity\Core\Config->_processSeoCall()\n#6 /srv/www/kaese-shop/public/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/Config.php(440): OxidEsales\EshopCommunity\Core\Config->initializeShop()\n#7 /srv/www/kaese-shop/public/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(590): OxidEsales\EshopCommunity\Core\Config->init()\n#8 /srv/www/kaese-shop/public/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(136): OxidEsales\EshopCommunity\Core\ShopControl->_runOnce()\n#9 /srv/www/kaese-shop/public/oxid/vendor/oxid-esales/oxideshop-ce/source/Core/Oxid.php(27): OxidEsales\EshopCommunity\Core\ShopControl->start()\n#10 /srv/www/kaese-shop/public/oxid/source/index.php(16): OxidEsales\EshopCommunity\Core\Oxid::run()\n#11 /srv/www/kaese-shop/public/oxid/source/oxseo.php(29): require(’/srv/www/kaese-…’)\n#12 {main}\n"] []’