OXID SEO – under the hood

Da die SEO-Funktionalität in OXID nicht unbedingt selbsterklärend ist, hier ein kurzer technischer Einblick in die Erzeugung und „Archivierung“ von SEO-URLs am Beispiel von Kategorie-URLs im Shop 🙂

OXID SEO-URLs werden in der Tabelle „oxseo“ gespeichert. Kategorie-URLs werden aus dem Titel (OXTITLE) der Kategorie generiert, wobei Umlaute und Sonderzeichen natürlich ersetzt bzw. entfernt werden (Details dazu hier). Blättert man in Kategorien, werden für jede Seite eigene Einträge in „oxseo“ geschrieben.

Die jeweilige Seitenzahl wird hier im Feld „OXPARAMS“ gespeichert. Wird der Titel einer Kategorie geändert, muss natürlich sinnvollerweise auch die SEO-URL dieser Kategorie geändert werden (plus die URLs aller Unterkategorien sowie die URLs der Artikel in diesen Kategorien – siehe oxcategory::_update() sowie oxseoencodercategory::markRelatedAsExpired()).

Speichert man also eine Kategorie im Admin-Bereich, so geschieht folgendes:

  1. die Kategorie-SEO-URL, die SEO-URLs ihrer Unterkategorien und die SEO-URLs der Artikel in Kategorie  und Unterkategorien werden als abgelaufen markiert (das Feld „OXEXPIRED“ in der Tabelle „oxseo“ wird für die betroffenen Einträge auf 1 gesetzt)
  2. wird die neue SEO-URL aufgerufen und sie ist noch nicht in der „oxseo“-Tabelle vorhanden, so wird die vorherige SEO-URL, die dort gespeichert ist und auf „OXEXPIRED = 1“ steht, mit der neuen URL überschrieben, OXEXPIRED wieder auf 0 gesetzt und die alte URL in die Tabelle „oxseohistory“ gespeichert. Die eigentliche SEO-URL wird hier in Kleinbuchstaben umgewandelt und dann als MD5-Hash im Feld „OXIDENT“ gespeichert – dieses Feld wird mit der Browser-URL verglichen und über die OXOBJECTID bekommt man wieder den Link zur eigentlichen „oxseo“-Tabelle.
  3. wird die alte SEO-URL aufgerufen, wird dann anhand des Eintrags in der „oxseohistory“ per 301-Redirect von der alten auf die neue URL weitergeleitet. Aufrufe alter URLs werden dabei mitgezählt, die Anzahl wird im Feld „OXHITS“ in der Tabelle „oxseohistory“ gespeichert.

Generell werden neue SEO-URLs erst gespeichert bzw. historisiert, wenn die URL im Front- oder Backend aufgerufen wird.

SEO-URLs werden u.a. von der Klasse oxSeoDecoder aus Performancegründen gecached. Generelle Informationen zur SEO-Funktionalität in OXID finden sich hier.



0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.