Перенаправить documentroot в другую папку в conf apache или .htccess

#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. Здесь два замечания. Во-первых, ваше правило создает цикл перенаправления. Тогда на самом деле возможно внутренне переписывать И перенаправлять одновременно без цикла. Смотрите мой ответ для получения более подробной информации