rediriger dans sous-répertoire et de sous-répertoire
-
23-09-2019 - |
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.
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]