Преобразуйте в нижний регистр в правиле mod_rewrite

Я хотел бы, чтобы URL как server.com/foo были нечувствительны к регистру. Но server.com/foo на самом деле получает mod_rewrite'd на server.com/somedir/foo

(Предположите, что все файлы в "somedir" являются нижним регистром.)

Таким образом, вопрос, как выполнить mod_rewrite как следующее:

RewriteRule  ^([^/]+)/?$  somedir/convert_to_lowercase($1)

PS: вот удобная mod_rewrite шпаргалка - http://dreev.es/modrewrite - хотя ей не удается ответить на этот конкретный вопрос.

PPS: Благодаря Bee и Ignacio для всей справки с этим. Кроме того, вот связанный вопрос: активация RewriteMap

15
задан Community 23 May 2017 в 10:31
поделиться

2 ответа

Во-первых, поместите следующую строку в раздел вашего .conf файла. (Для меня это место находится в /etc/httpd/vhosts.d/00foo.conf.)

RewriteMap lc int:tolower 

Вы можете заменить lc на любое имя, которое вам нужно. Затем перезапустите apache, что можно сделать с помощью sudo service httpd restart.

Наконец, добавьте это в ваш файл .htaccess:

RewriteRule ^/(.*)$ /${lc:$1} 
18
ответ дан 1 December 2019 в 01:53
поделиться
RewriteMap tolower int:tolower
RewriteRule  ^([^/]+)/?$  somedir/${tolower:$1}
12
ответ дан 1 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

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