在mod_rewrite规则中转换为小写

dre*_*ves 15 regex apache mod-rewrite url-rewriting

我希望像server.com/foo这样的URL不区分大小写.但是server.com/foo实际上将mod_rewrite'd发送到server.com/somedir/foo

(假设"somedir"中的所有文件都是小写的.)

所以问题是,如何完成如下的mod_rewrite:

RewriteRule  ^([^/]+)/?$  somedir/convert_to_lowercase($1)
Run Code Online (Sandbox Code Playgroud)

PS:这是一个方便的mod_rewrite备忘单 - http://dreev.es/modrewrite - 虽然它无法回答这个特殊问题.

PPS:感谢 BeeIgnacio 提供的所有帮助.另外,这是一个相关的问题: RewriteMap激活

dre*_*ves 18

首先,将以下行放在<VirtualHost>.conf文件的部分中.(对我而言,生活在/etc/httpd/vhosts.d/00foo.conf.)

RewriteMap lc int:tolower 
Run Code Online (Sandbox Code Playgroud)

您可以替换lc为您想要的任何名称.然后重启apache,你可以做sudo service httpd restart.

最后,在.htaccess文件中添加:

RewriteRule ^/(.*)$ /${lc:$1} 
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 12

RewriteMap tolower int:tolower
RewriteRule  ^([^/]+)/?$  somedir/${tolower:$1}
Run Code Online (Sandbox Code Playgroud)