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.

War es hilfreich?

Lösung

Untersuchen Sie die HTTP-request-Zeile in THE_REQUEST statt:

RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top