redirect in Unterverzeichnis UND aus dem Unterverzeichnis
-
23-09-2019 - |
Frage
ich habe eine mod_rewrite-Umleitung problem, das ich nicht herausfinden.
alle Anfragen von einer bestimmten domain erhalten Sie "automatisch", umgeschrieben in ein benanntes Unterverzeichnis.z.B. www.mydomain.net/hello.html
ruft die Datei in /net/hello.html
.die folgenden .htaccess (befindet sich in meinem hosting-root) gelingt dies perfekt:
RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} 200 # <-- i will need this later. read to the end of the post.
RewriteRule .* - [L]
rewriteCond %{HTTP_HOST} ^www.mydomain.net$
rewriteCond %{REQUEST_URI} !^/net.*$
rewriteRule (.*) /net/$1 [L]
jedoch direkten URLs in diesem Verzeichnis sollte jedoch sichtlich redirect mit Statuscode 301 auf die URL ohne das Unterverzeichnis.z.B. www.mydomain.net/net/hello.html
sollte eine Weiterleitung an www.mydomain.net/hello.html
(die als immer noch ruft die Datei in /net/hello.html
).meine .htacces-Datei für dieses (platziert in /net
) leider funktioniert nicht:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]
ich bekomme ein Infinitiv redirect-Schleife trotz der RewriteCond %{ENV:REDIRECT_STATUS} 200
block in der Wurzel .htaccess-Datei...also, was ist falsch?
btw, ich muss mit mod_rewrite, weil der Ort ist Variante gehostet, und ich habe keinen Zugriff auf die apache configs.
vielen Dank für jegliche Hinweise.
Lösung
Untersuchen Sie die HTTP-request-Zeile in THE_REQUEST statt:
RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]