Question

J'ai un problème de redirection mod_rewrite je ne peux pas comprendre.

toutes les demandes d'un domaine spécifique sont « en silence » réécrites dans un sous-répertoire désigné. par exemple. www.mydomain.net/hello.html récupère le fichier dans /net/hello.html. le .htaccess suivant (placé dans ma racine d'hébergement) atteint parfaitement:

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]

cependant, mais doivent visiblement URL directe dans ce répertoire avec une redirection 301 vers l'URL sans ce sous-répertoire. par exemple. www.mydomain.net/net/hello.html devrait rediriger vers www.mydomain.net/hello.html (qui récupère encore que le fichier dans /net/hello.html). mon fichier .htaccess pour cette (placé dans /net) , malheureusement, ne fonctionne pas:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]    

je reçois un infinitif redirect boucle malgré le bloc RewriteCond %{ENV:REDIRECT_STATUS} 200 dans le fichier .htaccess racine ... donc ce qui ne va pas?

BTW, je dois utiliser mod_rewrite, parce que le site est hébergé externaly et j'ai pas accès aux configs apache.

Merci beaucoup pour tous les pointeurs.

Était-ce utile?

La solution

Vérifier la ligne de demande HTTP < em> THE_REQUEST au lieu:

RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top