Weiterleitung mit Redirect 301

Hallo

Ich habe bei unserer Umstellung auf Oxid in der .htaccess einige Redirects definiert, damit die alten Produkte- und Kategorien-URL’s auf die neuen umgeleitet werden. Dies habe ich folgend gemacht.

Redirect 301 /product_info.php/products_id/53 http://www.domain.de/garderoben/holz-kleiderbuegel-tiere.html

Nun erhalte ich im Shop bei all diesen Weiterleitungen jeweils eine 404 Fehlerseite. Ursache wird wohl die folgende Zeile sein.

RewriteRule (\.html|\/)$ oxseo.php

So wie es mir scheint, werden dadurch alle URL’s mit der Endung .html an oxseo.php weitergeleitet und dies weiss mit “/product_info.php/products_id/53” nichts anzufangen. Gibt es eine Möglichkeit, dass ich die selber definierten Redirects von der oxseo.php-Regel ausklammere? Oder wie habt ihr bei euren Migrationen Google klar gemacht, dass die alten URL’s nun nicht mehr gültig sind und auf die neuen umgeleitet werden?

Gruss
Roland

Hallo Roland,

m. E. sollte das viel einfacher zu machen sein:
Füll die oxseohistory mit den alten URLs, die oxseo mit den neuen (die ja erst zur Laufzeit generiert und dort abgelegt werden).
Nun kommt der kleine crawler und will auf Deine alte Seite zugreifen, bekommt einen 301 und wird auf die neue URL umgeleitet, die er auch gleich indizieren kann.
Vikram hatte dazu mal ein Tutorial geschrieben:

Gruß

Danke für den Tipp. Stellt sich nur noch die Frage, wie ich die oxseo und oxseohistory füllen kann. Einfach alle URL’s unter Stammdaten => Grundeinstellungen => SEO eintragen?

Moin,

wahrscheinlich am besten über die Datenbank selbst.
Ich würde so vorgehen:

  • schreib die alten URLs in die oxseo zum zugehörigen Artikel
  • beim ersten Aufruf des Artikels sollte die neue URL generiert und in die oxseo geschrieben werden, vorher wandert die alte URL in die oxseohistory
  • den Aufruf jeder Seite könnte man mit einem script oder irgendeinem Crawler-programm wie Gsitemapcreator provozieren

Gruß

Da bin ich tagelang dran.
Gibt es keine Möglichkeit meine Redirect 301 von der Regel “RewriteRule (.html|/)$ oxseo.php” auszugklammern?

Hi,

da muss ich passen :frowning:

Gruß

Marco’s Vorschlag funktioniert leider nur bei Neuinstallationen. Bei uns sind jedoch schon alle Produkte in der Datenbank. Ich habe nun unsere .htaccess mal folgend angepasst und mit der Zeile “RewriteCond %{REQUEST_URI} !/product_info.php/” versucht, alles was mit product_info.php anfängt aus der Regel “RewriteRule (.html|/)$ oxseo.php” auszuklammern. Leider ohne Erfolg. Hat jemand noch einen Tipp, wie ich Ausnahmen machen kann?

RedirectPermanent /product_info.php/products_id/53 http://www.domain.ch/garderoben/holz-kleiderbuegel-tiere.html

<IfModule mod_rewrite.c>

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !(\/core\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
RewriteRule admin/test\.php$ admin/test.php?mod_rewrite=1

RewriteCond %{REQUEST_URI} !(\/admin\/|\/core\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !(\.html|\/|\.jpg|\.css|\.pdf|\.doc|\.gif|\.png|\.js)$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{REQUEST_URI} !(\/admin\/|\/core\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/product_info.php/

RewriteRule (\.html|\/)$ oxseo.php


</IfModule>

Options -Indexes

Bei uns beinhaltet das Modul von Frank Knapp (kurze und kleingeschriebene URLs der Artikel) die Weiterleitung der alten URLs auf die Neuen.

Naja, 600 Euro für ein Modul auszugeben, bei welchem ich genau eine Funktion benötige ist schon ein bisschen heftig.

Na, dann frag doch mal, ob er Dir ein “kleineres Modul” stricken kann.

Ich habe auf oxidforge.org ein kleines Tutorial geschrieben. In diesem ist beschrieben, wie man permanente Weiterleitungen mit Oxid erstellen kann.

Hallo,
was passiert den in dem Fall, dass ich einen Kategorie-Namen ändere? Ist das mit der normalen Funktion von der seohistory abgefangen?

Beispiel - ein Artikel ist bei Google bekannt:
stempelmeer.de/Hilfsmittel/Stanzsysteme/[U]Big-Shot-und-Squeeze[/U]/Big-Shot.html

Jetzt will ich den Namen von der Kategorie [U]Big-Shot-und-Squeeze[/U] ändern zu [U]Big-Shot[/U].
Der neue Link sieht dann so aus:
stempelmeer.de/Hilfsmittel/Stanzsysteme/[U]Big-Shot[/U]/Big-Shot.html

Ist dann automatisch der alte Link mit dem Redirect in der SEO-History und wird auf dem neuen SEO-Link wiedergefunden?

Auf eine Antwort freut sich
Gregor

[QUOTE=gregor;19063]
was passiert den in dem Fall, dass ich einen Kategorie-Namen ändere? Ist das mit der normalen Funktion von der seohistory abgefangen?

Ist dann automatisch der alte Link mit dem Redirect in der SEO-History und wird auf dem neuen SEO-Link wiedergefunden?

[/QUOTE]

Hallo Gregor,

genau dafür ist es gedacht. :slight_smile:

Gruß

Ja, der Link stempelmeer.de/Hilfsmittel/Stanzsysteme/Big-Shot-und-Squeeze/Big-Shot.html wird dann mit Redirect 301 auf stempelmeer.de/Hilfsmittel/Stanzsysteme/Big-Shot/Big-Shot.html weitergeleitet.

Hallo,
das ist richtig gut und wertvoll.
Bei dem Umbenennen einer Kategorie funktioniert es auch problemlos -super!

Beim Verschieben eines Artikels von einer in eine andere Kategorie ging es nicht so glatt:
[ul]
der Link /nach Marke/Hersteller/… war falsch eingetragen in der oxseo-Tabelle (falsch im Sinne von ‘oxsdturl-Link funktioniert nicht’) und Artikel wird nicht mehr gefunden. [/ul]
[ul]
der Link /kategorie/… für den Artikel hat jetzt zwei SEO-Kategorie-Links (der alte und der neue Link) in der oxseo drin und der Artikel wird über beide Links gefunden
[/ul]

Was passiert denn, wenn jetzt die SEO-URLs im Admin neu berechnet werden?

Grüsse
Gregor

Hi,

ich hatte alternative URLs nach diesem Tutorial (vielen Dank!) eingepflegt, es setzte einen Fehler.

Habe nun herausgefunden, dass man statt

MD5(‘/meinalterproduktelink.php’)

MD5(‘meinalterproduktelink.php/’)

setzen muss, dann funzt es.

Vielen Dank und Gruß in die Runde,
Achim

Hallo Achim,

[QUOTE=oxal;20786]Hi,

ich hatte alternative URLs nach diesem Tutorial (vielen Dank!) eingepflegt, es setzte einen Fehler.

Habe nun herausgefunden, dass man statt

setzen muss, dann funzt es.

Vielen Dank und Gruß in die Runde,
Achim[/QUOTE]

Vielen Dank für die Rückmeldung. Du kannst auch in der Wiki direkt ändern, der Login sollte mittlerweile der gleiche sein wie hier :wink:

Gruß

[QUOTE=Marco Steinhaeuser;20981]
Vielen Dank für die Rückmeldung. Du kannst auch in der Wiki direkt ändern, der Login sollte mittlerweile der gleiche sein wie hier ;)[/QUOTE]

Hab’s dort korrigiert…

Grüße,
Achim

Sorry, war bei mir untergegangen. Danke für die Änderung.

Hallo zusammen,

das Redirect-Tutorial funktioniert soweit ganz gut (hier nochmal vielen Dank an den Author/die Authoren).
Allerdings müsste ich eine Weiterleitung von
"<Shop>/store/displaystore.asp?sid=421"
nach
"en/Music/Classic-Rock.html"
bzw. OxObject "47b28667b007cdf675e84f7235c84594"
einrichten.

-> Insert-Query:


INSERT INTO oxseohistory (OXOBJECTID, OXIDENT, OXSHOPID, OXLANG) 
VALUES ('47b28667b007cdf675e84f7235c84594', MD5('store/displaystore.asp?sid=421/'), 1, 1);

Führe ich nun die alte Url ("…store/displaystore.asp?sid=421") aus, so wird diese geaendert in “store/displaystore.asp/?sid=421”, sprich es wird ein “/” vor dem ? eingefügt.
Die gewünschte Seite wird darauf nicht angezeigt (“The specified URL cannot be found”).

Muss ich das “?” escapen beim Eintrag in oxseohistory?

Eingesetzt wird Oxid EE 4.2.0 mit Standardsprache Englisch (1).

Vielen Dank schon mal
Gruß Jens