我现在拥有的是以下内容:
RewriteRule ^([^/]+)/*$ x/$1.html [L,NC,END]
这表明:
/abcd to x/abcd.html
/ABCD to x/ABCD.html
这在区分大小写的 Unix 文件系统上不太好。
我想要的是将两种变体都指向:
x/abcd.html
如何实现?
Stack Overflow 上也有人问过类似的问题,但似乎没有一个解决 Unix 系统上正则表达式反向引用的问题。
可以使用
RewriteMap
指令来转换 URL 中的文本,而不仅仅是替换它。 Apache httpd 用户指南有一个页面详细介绍了如何使用 RewriteMap,其中包括以下示例:
将 URI 重定向到其自身的全小写版本RewriteMap lc int:tolower
RewriteRule "(.*)" "${lc:$1}" [R]第一行将映射“lc”定义为内置“tolower”函数,第二行将该映射应用于重写规则中的反向引用 $1。
因此,在您的示例中,您可以使用:
RewriteMap lc int:tolower
RewriteRule ^([^/]+)/*$ x/{lc:$1}.html [L,NC,END]