我正在尝试制作一个只会将小写应用于目录(不是文件名)的重写规则
在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
答案 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
希望这有帮助。