Я запускаю доступную в Интернете лингвистическую базу данных на сервере.Файл lexirumah
в корне документа моего сервера содержит скрипт Python WSGI, обслуживающий приложение.
Я хочу, чтобы приложение было доступно для всех совпадений, независимо от регистра, http://www\.example\.eu/lexirumah?/?
.В настоящее время я использую следующий .htaccess
файл.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.eu$ [NC]
RewriteRule ^(.*)$ http://www.example.eu/$1 [L,R=301,NC]
RewriteRule ^lexirumah?$ http://www.example.eu/lexirumah/ [L,R=301,NC]
RewriteRule ^lexiruma/$ http://www.example.eu/lexirumah/ [L,R=301,NC]
RewriteRule ^LexiRumah/$ http://www.example.eu/lexirumah/ [L,R=301]
Options +ExecCGI
<Files "lexirumah">
SetHandler fcgid-script
</Files>
Когда я изменяю последний RewriteRule
на
RewriteRule ^LexiRumah/$ http://www.example.eu/lexirumah/ [L,R=301,NC]
, я получаю бесконечное количество перенаправлений.Я хочу сохранить статус 301 для неканонических URL-адресов, поэтому я попытался
RewriteRule ^lexirumah/$ http://www.example.eu/lexirumah/ [L]
RewriteRule ^lexirumah?$ http://www.example.eu/lexirumah/ [L,R=301,NC]
RewriteRule ^lexiruma/$ http://www.example.eu/lexirumah/ [L,R=301,NC]
RewriteRule ^LexiRumah/$ http://www.example.eu/lexirumah/ [L,R=301,NC]
, что привело к внутренней ошибке сервера.(Предположительно, бесконечный цикл перенаправления, который был перехвачен моим браузером ранее, теперь происходит внутри mod_rewrite
?)
Теперь я изменил правила, чтобы использовать RewriteCond
, чтобы пропустить нормализацию регистра, когда он уже является строчным.
RewriteCond %{REQUEST_URI} !^/lexirumah/$
RewriteRule ^LexiRumah/$ http://www.example.eu/lexirumah/ [L,R=301,NC]
RewriteRule ^lexirumah?$ http://www.example.eu/lexirumah/ [L,R=301,NC]
RewriteRule ^lexiruma/$ http://www.example.eu/lexirumah/ [L,R=301,NC]
Выполняет ли этот набор правил то, что я хочу, или есть какие-то скрытые подводные камни, которые мне необходимо учитывать?