Недавно мне пришлось перейти с cPanel на CentOS Web Panel, и в именах файлов возникла проблема с учетом регистра, поэтому "filewhatEver.jpg" не обнаруживается в URL-адресе "filewhatever.jpg" (раньше в cPanel проблем не было) .
У этого сайта (всего их 4) .htaccess имеет только базовую конфигурацию для сайтов WordPress:
RewriteEngine on
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
mod_rewrite активен (указан в активных модулях), но когда я пытаюсь:
RewriteMap insensitive tolower:
RewriteRule ^[\/]*(.*)$ /${insensitive:$1} [R,L]
Не повезло. Изменить: дает мне «Внутреннюю ошибку сервера».
Любая идея?
Поскольку базовые имена файлов имеют смешанный регистр, вы не можете использовать карту перезаписи для преобразования запроса в нижний регистр, поскольку он все равно не будет соответствовать. (Кстати, карты перезаписи могут быть определены только в конфигурации основного сервера, а не в .htaccess
.)
Однако вы можете использовать mod_speling (один l
) для достижения соответствия файлов без учета регистра.
Сначала вам нужно убедиться, что на вашем сервере включен mod_speling. Затем добавьте следующие директивы в конфигурацию вашего виртуального хоста (или .htaccess
файл):
CheckSpelling on
CheckCaseOnly on
Обратите внимание, однако, что есть дополнительные накладные расходы на использование mod_speling, и при обнаружении файла запускается внешнее перенаправление. Перенаправление необходимо для SEO, но будет плохо для производительности сервера, если вы запрашиваете ресурсы изображения в смешанном случае (как это выглядит?).
Я предполагаю, что mod_speling должен быть включен по умолчанию на вашем старом сервере cPanel, поскольку по умолчанию это не было бы нечувствительным к регистру.
mod_speling действительно только для неправильно оформленных запросов с внешних сайтов. Любые внутренние запросы действительно должны быть «исправлены», чтобы соответствовать правильному регистру базового файла.