Я хотел бы, чтобы 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
Во-первых, поместите следующую строку в раздел
вашего .conf файла.
(Для меня это место находится в /etc/httpd/vhosts.d/00foo.conf
.)
RewriteMap lc int:tolower
Вы можете заменить lc
на любое имя, которое вам нужно.
Затем перезапустите apache, что можно сделать с помощью sudo service httpd restart
.
Наконец, добавьте это в ваш файл .htaccess:
RewriteRule ^/(.*)$ /${lc:$1}
RewriteMap tolower int:tolower
RewriteRule ^([^/]+)/?$ somedir/${tolower:$1}