3 Stimmen

Umleitung 301 / Rewrite-Rätsel

Auf meiner Website können die Benutzer verschiedene URLs hinzufügen, die umgeleitet werden müssen.

Zum Beispiel so: domain.com/oldpage/36/

Hierzu: domain.com/newpage/47/

Sie werden der .htaccess-Datei wie folgt hinzugefügt:

Redirect 301 /oldpage/36/ /new-page/47/

Wenn sie jedoch die alte Seite aufrufen, erhalten sie diese Meldung:

domain.com/newpage/47/?pid=36&pagename=oldpage

Ich bin mir ziemlich sicher, dass diese Umschreibungsregeln die Ursache für dieses Dilemma sind:

RewriteRule ([^.]+)/([0-9]+)/$ index.php?pid=$2&pagename=$1
RewriteRule ([^.]+)/([0-9]+)/([^.]+) index.php?pid=$2&pagename=$1&vars=$3

Allerdings ist mod_rewrite nicht meine Stärke, daher habe ich keine Ahnung, wie ich das Problem beheben kann.

Irgendwelche Ideen?

2voto

mkilmanas Punkte 3285

Da Sie sowieso schon mod_rewrite verwenden, sollten Sie Ihre Weiterleitungen auch mit Rewrites erstellen

RewriteRule /oldpage/36/ /new-page/47/ [R=301]

Dadurch wird die URL von der alten auf die neue umgeschrieben und der Browser wird mit dem Statuscode auf die neue URL umgeleitet 301 . [R] bedeutet eine Umleitung, die auch andere Regeln von der Verarbeitung abhält, so dass die anderen Regeln nur behandelt werden, wenn die neue Anfrage von broswer mit der neuen URL gesendet wird.

2voto

Tomgrohl Punkte 1747

Hinzufügen einer ? macht die Rewrite die Abfragezeichenfolge nicht zur URL hinzufügen.

Das sollte also funktionieren:

Redirect 301 /oldpage/36/ /new-page/47/?

Als Vorsichtsmaßnahme können Sie es auch am Ende von hinzufügen:

RewriteRule ([^.]+)/([0-9]+)/$ index.php?pid=$2&pagename=$1?
RewriteRule ([^.]+)/([0-9]+)/([^.]+) index.php?pid=$2&pagename=$1&vars=$3?

Aber nur, wenn sie gebraucht werden

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X