#apache #http #mod-rewrite #url-rewriting
#apache #http #mod-перезаписать #переписывание URL
Вопрос:
Добрый день
Я хочу переписать URL-адрес при запросе подкаталога, когда пользователь запрашивает
172.0.0.1/url
я хочу переписать, чтобы этот URL указывал на
172.0.0.1/url/url
или documentroot находится в /var/www/html/url/url укажите на
172.0.0.1/url
Ответ №1:
Хитрость здесь в том, чтобы избежать создания цикла перезаписи и перенаправления. Вы можете поместить этот код в свою корневую папку htaccess
RewriteEngine On
# Redirect /url/url/xxx to /url/xxx
RewriteCond %{THE_REQUEST} s/(url)/url/(.*)s [NC]
RewriteRule ^ /%1/%2 [R=301,L]
# Internally rewrite back /url/xxx to /url/url/xxx
RewriteRule ^(url)/((?!url/).*)$ /$1/$1/$2 [L]
Ответ №2:
Вы можете использовать .htaccess
для перенаправления /url
на /url/url
Просто создайте файл .htaccess по адресу /var/www/html/
, содержащий следующее:
RewriteEngine on
RewriteRule ^/?url/(.*)$ /url/url/$1 [R,L]
Это перенаправит все входящие запросы на /url
и перенаправит их на /url/url
Но вы не можете перенаправлять запросы, приходящие с /url/url
на /url
, потому что мы уже перенаправляем запрос на /url
, это приведет к перехвату 22, и браузер будет продолжать перенаправлять туда и обратно между /url
и /url/url
.
Комментарии:
1. Здесь два замечания. Во-первых, ваше правило создает цикл перенаправления. Тогда на самом деле возможно внутренне переписывать И перенаправлять одновременно без цикла. Смотрите мой ответ для получения более подробной информации