Apache 将规则重写为仅小写目录
Apache rewrite rule to lowercase directory only
我正在尝试制定一个仅将小写应用于目录(而不是文件名)的重写规则
在 apache 手册的帮助下,我已经走到这一步了:
RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*?[A-Z]+.*) ${lc:}
但显然这将应用于整个 uri。我尝试了很多不同的正则表达式和 RewriteConditions,但正则表达式真的让我头疼,想知道是否有人可以提供帮助。
确认一下,我想要这个:
http://www.anything.any/AnYpatH/iN/Site/FiLeNaMe.ExT
重写为:
http://www.anything.any/anypath/in/site/FiLeNaMe.ExT
您可以这样使用:https?:\/\/.+?\/(.*?[A-Z]+.*)\/
这将匹配其捕获组中的 AnYpatH/iN/Site
。
可以找到正则表达式的工作示例 here。
基本上,您希望将路径和文件名捕获为单独的组。路径将是最后一个斜杠 /
之前的所有内容,而文件名将是之后的所有内容。这可以通过以下正则表达式 (see demo here) 完成:
(.*?[A-Z].*\/)(.*)
然后您需要执行以下操作(如果我的 .htaccess
语法不正确,请见谅):
RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*?[A-Z].*\/)(.*) ${lc:}
希望对您有所帮助。
我正在尝试制定一个仅将小写应用于目录(而不是文件名)的重写规则
在 apache 手册的帮助下,我已经走到这一步了:
RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*?[A-Z]+.*) ${lc:}
但显然这将应用于整个 uri。我尝试了很多不同的正则表达式和 RewriteConditions,但正则表达式真的让我头疼,想知道是否有人可以提供帮助。
确认一下,我想要这个:
http://www.anything.any/AnYpatH/iN/Site/FiLeNaMe.ExT
重写为:
http://www.anything.any/anypath/in/site/FiLeNaMe.ExT
您可以这样使用:https?:\/\/.+?\/(.*?[A-Z]+.*)\/
这将匹配其捕获组中的 AnYpatH/iN/Site
。
可以找到正则表达式的工作示例 here。
基本上,您希望将路径和文件名捕获为单独的组。路径将是最后一个斜杠 /
之前的所有内容,而文件名将是之后的所有内容。这可以通过以下正则表达式 (see demo here) 完成:
(.*?[A-Z].*\/)(.*)
然后您需要执行以下操作(如果我的 .htaccess
语法不正确,请见谅):
RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*?[A-Z].*\/)(.*) ${lc:}
希望对您有所帮助。