2010-08-24 3 views
0

je dois changer l'URL d'un répertoire de sorte que:Comment modifier l'URL d'un répertoire

www.example.com/foo/ 

devient

www.example.com 

Je ne peux pas déplacer les fichiers.

Mettre un fichier htaccess à l'aide mod_rewrite pour réécrire simplement www.example.com à www.example.com/foo était pas un problème

RewriteEngine On 
RewriteRule !^foo/ foo%{REQUEST_URI} [L] 

Cependant, je doit faire en sorte que si l'utilisateur demande www .example.com/foo que le statut http est 404 ou que l'utilisateur est redirigé vers www.example.com. Malheureusement, quoi que je fasse, il semble se terminer par une boucle infinie. Par exemple, cela se traduit par une boucle de redirection infinie:

RewriteEngine On 
RewriteRule !^foo/ foo%{REQUEST_URI} [L] 

RewriteCond %{REQUEST_URI} ^/foo 
RewriteRule ^foo(.*) http://www.example.com$1 [R=301,L] 

Répondre

1

Vous devez conditionner à la demande initiale envoyée au serveur, car le %{REQUEST_URI} va changer au cours du traitement mod_rewrite, ce qui provoque la boucle de redirection interne.

Par conséquent, quelque chose comme cela devrait prendre soin des choses (pour le 404, votre 301 RewriteRule devrait fonctionner correctement aussi bien si vous voulez échanger que):

RewriteCond %{THE_REQUEST} ^[A-Z]+\s/foo [NC] 
RewriteRule^- [R=404] 
Questions connexes