Недавно я переключился с IIS на Apache, и, к сожалению, некоторые из моих ссылок имеют проблемы с капитализацией. Я видел довольно много людей, которые говорили о том, как переписывать URL-адреса, чтобы они были в нижнем регистре или в верхнем регистре, но мне нужно что-то, чтобы просто сделать регистр Apache нечувствительным. Это можно сделать с помощью .htaccess?
Как я могу сделать регистр Apache без учета использования .htaccess?
Ответ 1
добавить
CheckSpelling on
в ваш .htaccess
файл
конечно, после включения RewriteEngine
поэтому окончательный код будет
RewriteEngine on
CheckSpelling on
Я думаю, что это лучший и безопасный способ.
Не забудьте изменить
AllowOverride none
до
AllowOverride All
внутри вашего файла httpd.conf
, чтобы файлы .htaccess работали правильно.
Ответ 2
Если CheckSpelling
не работает для вас, и вы используете PHP, вы можете добавить перенаправление PHP на страницу 404, чтобы перенаправить на строчную версию URL. Для начала, если вы еще этого не сделали, добавьте следующий код в ваш файл .htaccess (вы можете назвать файл как-нибудь иначе, чем 404.php, если хотите, но это должен быть файл PHP):
ErrorDocument 404 /404.php
Затем добавьте следующий код в начале 404.php (если вы используете HTTPS, измените http://
на https://
во второй строке):
if(preg_match("/[A-Z]/", $_SERVER["REQUEST_URI"])){
header("location:http://" . $_SERVER["HTTP_HOST"] . strtolower($_SERVER["REQUEST_URI"]));
exit();
}
Этот код использует простое регулярное выражение, чтобы проверить, содержит ли запрошенный URI заглавные буквы, и если он это делает, он перенаправляет на ту же страницу, но с строчными буквами.