правило перезаписи для каталога с учетом регистра [дубликат]

Я собираюсь настроить перезапись, чтобы игнорировать регистр имени каталога в URL.

Например, у меня есть

example.com/TestDirectory

Я хочу проигнорировать регистр, чтобы URL-адрес по-прежнему был направлен на

example.com/testdirectory

Вот что у меня есть, но похоже, что он не работает:

# rewrite rules for example.com/TestDirectory
RewriteCond %{http_host} ^example\.com [NC,OR]
RewriteCond %{http_host} ^www\.example\.com\TestDirectory [NC]
RewriteRule $ http://www.example.ccom/testdirectory/

Мне не хватает шаг?

0
задан 11 June 2017 в 02:31
1 ответ

Чтобы реализовать каноническое перенаправление в каталог с правильным регистром (в данном случае все в нижнем регистре), вы можете сделать что-то вроде следующего:

RewriteCond %{REQUEST_URI} !^/testdirectory
RewriteRule ^testdirectory /testdirectory/ [NC,R,L]

NC ( nocase ) флаг RewriteRule гарантирует, что он будет соответствовать TestDirectory или TESTDIRECTORY и т. Д. И директиве RewriteCond . предотвращает цикл перенаправления, проверяя, что мы еще не находимся в testdirectory с учетом регистра символов.

Однако это только перенаправляет в каталог. Любой файл после имени каталога теряется. Чтобы перенаправить / TestDirectory / в / testdirectory / , попробуйте вместо этого что-то вроде следующего:

RewriteCond %{REQUEST_URI} !^/testdirectory
RewriteRule ^testdirectory/?(.*) /testdirectory/$1 [NC,R,L]

Обратите внимание, что это временное (302) перенаправление . Измените флаг R на R = 301 , если он предназначен для постоянного использования, но только после того, как вы проверите, что он работает нормально.

 RewriteCond% {http_host} ^ www  \ .example \ .com \ TestDirectory [NC]
 

Обратите внимание, что серверная переменная HTTP_HOST содержит только запрошенное имя хоста. Нет информации о URL-пути. Если вам нужно также проверить хост (если у вас несколько доменов), включите дополнительное условие:

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]

(предполагается, что домен уже канонизирован и включает субдомен www.)

0
ответ дан 5 December 2019 в 08:03

Теги

Похожие вопросы