Как изменить URL-адрес каталога - PullRequest
0 голосов
/ 25 августа 2010

Мне нужно изменить URL-адрес каталога так, чтобы:

www.example.com/foo/

становится

www.example.com

Я не могу переместить файлы.

Поместить файл htaccess с помощью mod_rewrite для простой перезаписи www.example.com на www.example.com/foo не было проблемой

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

Однако я должен убедиться, что если пользователь запрашивает www.example.com/foo, что http-статус равен 404, или пользователь перенаправляется на www.example.com. К сожалению, что бы я ни делал, кажется, что это заканчивается бесконечным циклом. Например, это приводит к бесконечному циклу перенаправления:

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

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

1 Ответ

1 голос
/ 25 августа 2010

Необходимо выполнить условие для исходного запроса, отправленного на сервер, поскольку %{REQUEST_URI} изменится во время обработки mod_rewrite, что приведет к внутренней петле перенаправления.

Следовательно, что-то подобное должно занятьзабота о вещах (для 404 ваш 301 RewriteRule также должен нормально работать, если вы хотите поменять его):

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