Rolf B: Umleiten auf andere URL aber nur wenn ....

Beitrag lesen

Hallo G. „Diddi“ Weiss,

dann hast Du falsch abgetippt oder es gibt Auswirkungen aus dem Umfeld.

Prinzipiell funktioniert das, was „Ludwig Poehlmann“ geschrieben hat. Auch wenn es mit dem ! vor der Bedingung einfacher gegangen wäre:

# Alles außer /spezial und /spezial/ umleiten auf example.com
RewriteCond %{REQUEST_URI} !^/spezial/?$ [NC]
RewriteRule ^ https://example.com/ [R=301,L]

Wenn es bei Dir nicht funktioniert, kann das verschiedene Ursachen haben.

  • Der Browser merkt sich, dass er für einen Request eine HTTP 301 Antwort bekommen hat, und geht für künftige Requests gar nicht mehr zum Server. Hier kann es helfen, die Entwickerwerkzeuge zu öffnen, auf dem Netzwerktab den Cache zu deaktivieren und die Abrufe dann zu testen. Oder du löschst generell den Brower-Cache in den Einstellungen des Browsers. Für Tests könnte es deshalb besser sein, nicht HTTP 301 zu senden, sondern 302. Das merkt sich der Browser nicht
  • Du hast noch andere Sachen in deiner .htaccess, die sich mit den RewriteCond/RewriteRule Angaben beißen
  • Du hast nicht /spezial/ abgerufen, sondern /spezial/foo.html, weil Du die Anforderung anders gemeint hast als wie wir sie verstanden haben. Die gezeigte RewriteCond funktioniert aber nicht für "beginnt mit /spezial/", sondern für "identisch zu /spezial oder /spezial/".

Rolf

--
sumpsi - posui - obstruxi