Apache重写规则仅限小写目录

时间:2015-01-12 15:17:06

标签: regex apache mod-rewrite

我正在尝试制作一个只会将小写应用于目录(不是文件名)的重写规则

在apache手册的帮助下,我已经做到了这一点:

RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*?[A-Z]+.*) ${lc:$1}

但显然这适用于整个uri。我已经尝试了很多不同的正则表达式和RewriteConditions,但是正则表达式让我很头疼,并且想知道是否有人可以提供帮助。

要确认一下,我想要这个:

http://www.anything.any/AnYpatH/iN/Site/FiLeNaMe.ExT

重写为:

http://www.anything.any/anypath/in/site/FiLeNaMe.ExT

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:https?:\/\/.+?\/(.*?[A-Z]+.*)\/这将与其捕获组中的AnYpatH/iN/Site匹配。

可以找到正则表达式的工作示例here

答案 1 :(得分:1)

基本上,您希望将路径和文件名捕获为单独的组。路径将是最终斜杠/的所有内容,而文件名将是之后的所有内容。这可以通过以下正则表达式(see demo here)完成:

(.*?[A-Z].*\/)(.*)

然后你会想要做以下事情(如果我没有正确的.htaccess语法,请道歉):

RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*?[A-Z].*\/)(.*) ${lc:$1}$2

希望这有帮助。