Hilfe - Suche - Mitglieder - Kalender
Vollansicht: probleme mit 301 redirect
Forum Sefrengo.org > Allgemeine Foren > Anwenderforum
oberbilker
hallo alle,

ich habe in der struktur seiten umgestellt und wollte via htaccess 301er diese änderungen weiterleiten lassen.
also zb:
QUELLTEXT
redirect 301 /ordner-alt/seite-alt.html http://www.domain.tld/ordner-neu/seite-neu.html


leider führt das in der ausgabe zu folgendem ergebnis in der url:
QUELLTEXT
http://www.domain.tld/ordner-alt/seite-alt.html?sf_rewrite=/ordner-neu/seite-neu.html"

weitergeleitet wird leider nicht.

[edit]
hmmm, wenn ich
QUELLTEXT
redirect 301 http://www.domain.tld/ordner-alt/seite-alt.html http://www.domain.tld/ordner-neu/seite-neu.html

benutze greift gar nichts und ich komme auf
QUELLTEXT
http://www.domain.tld/ordner-alt/seite-alt.html

irgendwie scheint da die letzte defaultzeile
QUELLTEXT
RewriteRule ^(.*)$ index.php?sf_rewrite=$1 [L,QSA]

zu greifen.
[/edit]

hat jemand eine idee, woran das liegen könnte?

greetz, oberbilker
bjoern
Versuch mal

QUELLTEXT
redirect 301 /ordner-alt/seite-alt.html http://www.domain.tld/ordner-neu/seite-neu.html [L]


Beachte das "[L]". DIes ist ein sogenanntes "mod_rewrite Flag", steht für "Last" und bedeutet, dass keine andere Regel mehr angewendet wird, wenn diese Regel zutrifft.

Momentatn läuft es so, dass Deine Regel angewendet wird, aber damit der Ablauf nicht beendet ist, sondern munter weiter gearbeitet wird. Die nächste Regel, die angewendet wird ist "RewriteRule ^(.*)$ index.php?sf_rewrite=$1 [L,QSA]" und die macht halt per Definition aus "http://www.domain.tld/ordner-alt/seite-alt.html" die Url "http://www.domain.tld/ordner-alt/seite-alt.html?sf_rewrite=/ordner-neu/seite-neu.html". Die Regel hat am Ende übrigens das "L" Flag, was dann ja bedeutet, dass nach der Regel mit der Abarbeitung weiterer Regeln absolut schicht ist, egal was danach in der Datei auch noch steht.

Zur Info: Es gibt noch ein zweites Flag bei der sf_rewrite Regel: "qsa". Dies bedeutet "query string append", und bewirkt, dass wenn die URL GET Parameter hat (?key1=val1&key2=val2), dann werden die auch mit übernommen. Steht das Flag nicht da, dann werden eventuelle GET Parameter ingnoriert. Statt "http://www.domain.tld/ordner-neu/seite-neu.html?key1=val1&key2=val2" gibt es dann nur "http://www.domain.tld/ordner-neu/seite-neu.html"

Weitere Informationen findest Du hier:
http://www.modrewrite.de/mod_rewrite.syntax.phtml (für den Hausgebrauch, deutsch)
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html (ausfürlich, englisch)
oberbilker
hallo björn,

danke für das feedback. den ansatz mit [L] hatte ich bereits versucht - mit dem ergebnis, dass ich auf der kompletten seite einen 500er serverfehler produziert habe.
lege ich allerdings die ordner und seiten manuell auf dem server an klappt die weiterleitung. hmm, sehr befriedigend ist das nicht, und spass machts auch eher weniger :/

greetz, oberbilker
bkm
und so ???
ZITAT
RewriteRule ^ordner-alt/seite-alt.html /ordner-neu/seite-neu.html [L,R=301]
oberbilker
hallo bkm,

das war es! vielen dank. ich war nah dran am ende...
QUELLTEXT
RewriteRule ^/ordner-alt/seite-alt.html /ordner-neu/seite-neu.html [L,R=301]

jetzt kann ich gleich viel entspannter ins wochenende gehen. ich werde das mal im wiki dokumentieren, um nachfolgenden meine kopfschmerzen zu ersparen.

greetz, oberbilker
bjoern
Doku klingt gut smile.gif, auch wieder was gelernt.
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2024 Invision Power Services, Inc.