Wumbo: htaccess redirect 301 alter Unterverzeichnisse - Hilfe

Beitrag lesen

Ich leite also das alte Verzeichnis auf das neue um: Redirect 301 /altesverzeichnis/ /themen/

Das funktioniert soweit auch.

Als nächstes kommen jedoch die Unterverzeichnisse, und da klappt es nicht mehr: Redirect 301 /altesverzeichnis/unterverzeichnis /themen/thema1.html

Was passiert denn genau, wird gar nicht umgeleitet oder in die falsche Richtung? Welcher Server (ich vermute einfach mal Apache)?

Falls du als erste die Redirect-Zeile für /altesverzeichnis/ angegeben hast und als zweite jene für /altesverzeichnis/unterverzeichnis, kann die zweite IIRC nicht mehr greifen.

Redirect leitet nicht einfach exakt den gegebenen Pfad um, sondern interpretiert ihn als nur als Anfang. /altesverzeichnis/ gilt also für /altesverzeichnis/ genauso wie für /altesverzeichnis/bla, /altesverzeichnis/bla/fasel/dings und so weiter, jedoch nicht für /altesverzeichnis (fehlender Schrägstrich am Ende). /bla wiederum würde sowohl für /bla gelten als auch für /blafasel, /bla oder /bla/dings/da/bumms.

Folglich greift deine erste Redirect-Zeile für /altesverzeichnis/ bereits alles ab, was jemals unter /altesverzeichnis/ lag und nachfolgende Redirect-Zeilen werden nicht weiter geprüft.

Beachte weiterhin, dass der Pfadrest an den Zielpfad angehängt wird. Redirect /quelle /ziel erzeugt also bei einem Aufruf von /quelle/a eine Weiterleitung nach /ziel/a.

Kurzum: Sortiere spezifische Weiterleitungen vor den allgemeineren ein. Mache gegebenenfalls Gebrauch von RedirectMatch, damit kannst du exakte Muster (mitsamt Anfang und Ende) angeben.

Noch eine zweite Frage: Ich stelle fest, dass sich die Änderungen in der htaccess anscheinend gar nicht mehr sofort auswirken. […] In den letzten Jahren habe ich ja doch schon öfter mit redirects in der htaccess gearbeitet und die Änderungen waren immer SOFORT wirksam.

Wie hier schon geschrieben wurde, werden 301-Weiterleitungen vom Browser zwischengespeichert; es sind ja nicht umsonst "permanente" Weiterleitungen.

Aber das macht das testen von redirects doch zum Wahnsinn, oder? Ich kann doch nicht nach jeder Änderung 1 Tag warten…

Du kannst zum Neuladen zusätzlich zum Klick auf das Neuladen-Feld die Hochstelltaste gedrückt halten, damit zwingst du Browser üblicherweise alles nochmals zu prüfen.

Alternativ verwende für solche Sachen immer das Netzwerkprotokoll der Entwicklerkonsole deines Browsers. Dort sollte dir angezeigt werden, wo der Browser seine Antwort herholt und den Zwischenspeicher kannst du eventuell ebenfalls ausschalten.