404 mittels Plugin abfangen und rerouten?

Hallo,

wir haben in unserem Shop die Kategorie-URLs bearbeitet und gekürzt und für die SEO optimiert.

Bevor wir die Änderung aber live schalten, möchten wir gern noch die alten URLs auf die entsprechende neue Struktur umleiten. Da sich lediglich die URLs in der s_core_rewrite_urls geändert haben und wir vorher eine Kopie der alten Daten gemacht haben, möchte ich nun mittels eines Plugins einfach die alten URLs auf die neuen umleiten. Per htaccess ist das leider nicht möglich, da hiervon etwa 500.000 Seiten betroffen sind.

Meine Idee wäre deshalb die folgende:
Shopware versucht wie bisher, die angefragte URL aufzulösen mittels der s_core_rewrite_urls. Findet Shopware jedoch nichts, wird normalerweise eine 404 Seite gezeigt. Hier soll das Plugin eingreifen: es soll den angefragten Request abfragen, in der  alten  s_core_rewrite_urls danach suchen und bei einem Treffer zu der neuen Kategorie (Kategorie-ID ist dann ja bekannt) mittels 301 umleiten. Wird das Plugin auch in der alten rewrite Tabelle nicht fündig, soll die URL auseinander genommen werden und schematische Bestandteile gesucht werden, nach denen dann wiederum gesucht werden kann.

Meine Frage:
Welches Event sollte ich am besten nutzen, um der 404 Seite vorzugreifen? Bisher habe ich es mit der Enlight_Controller_Front_RouteStartup probiert.
Wie bekomme ich aus den EventArgs (Enlight_Event_EventArgs) die URL ausgelesen?
Und wie kann ich bei erfolgreichem Fund einer neuen URL das Routing entsprechend anpassen?

Vielen Dank vorab!

Und wieso nicht einfach einen weiteren Eintrag in der s_core_rewrite_urls?

Und sowieso:

Standardmäßig wird da ja nichts aus s_core_rewrite_urls herausgelöscht so weit ich weiß. Das heißt, dass hätte direkt funktionieren müssen soweit ich die Doku richtig verstanden habe.

Auch eine 404-Seite wird mit den Standardeinstellungen eigentlich nicht angezeigt (und ist Einstellbar).

Die neue URL-Struktur soll ab sofort bei Google indexiert werden, weswegen die alten URLs nicht einfach “nur gefunden und angezeigt” werden sollen, sondern auf die jeweils NEUE URL mittels 301 weitergeleitet werden soll.

Der Eintrag in der s_core_rewrite_urls würde doch lediglich bewirken, dass der Inhalt auch unter der alten URL gefunden werden würde oder? Da hier kein besonderer HTTP Code ausgegeben wird, würde Google den gleichen Inhalt also unter zwei unterschiedlichen URLs indexieren, was dann ja Duplicate Content wäre. Und genau das möchten wir vermeiden, indem wir Google “zwingen” möchten, die alten URLs auf die neuen URLs umzuleiten.

Laut dem Shopware SEO-Guide sollte das alles schon von Haus aus funktionieren, wenn ich das richtig verstanden habe:

http://community.shopware.com/Shopware-SEO-Guide\_detail\_1397.html#SEO-URLs

Sofern sich eine URL mal ändert (beispielsweise beim Verändern des Produktnamens), so merkt sich Shopware 5 die „alte“ Artikel-URL und leitet diese sauber per Redirect 301 auf die neue URL um.

Hierbei macht es keinen Unterschied, ob der Bot Cookies akzeptiert oder nicht. Ein sauberes Redirect 301 erfolgt auf jeden Fall. Auf der weitergeleiten Seite wird zudem die canonical-Url der Zielseite ausgegeben. Somit stellt Shopware zu 100% sicher, dass kein Duplicate Content erfasst wird.