我对 Apache 重写规则有点困惑。
我需要它基于正则表达式,因此任何内容/5chars
都会example.com/F7heY
被内部重定向到files/$1
我尝试使用这个:
RewriteRule ^([a-zA-Z0-9_-]){3,5}$ files/$1 [NC,L]
运气不好。重写规则不是我的强项,这让我抓狂!任何帮助都将不胜感激。
答案1
您需要前导斜杠。试试这个:
RewriteRule ^/(.{5,5})$ /files/$1 [L]
或这个:
RewriteRule ^/(.....)$ /files/$1 [L]
不确定您为什么要指定合法字符列表,因为我认为您的[]
列表中包含了所有字符。通过将计数规范放在括号外,可以确保$1
只包含一个字符。您的要求指定了恰好 5 个字符,而不是 3 到 5 个字符。这就是我写的原因{5,5}
。但是,您可以重复该模式 5 次,如(.....)
。由于您在模式中同时指定了大写和小写字符,因此您不需要NC
(no case) 修饰符。对于任何字符匹配,您也不需要它.
。