基于正则表达式的 Apache 重写规则

基于正则表达式的 Apache 重写规则

我对 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) 修饰符。对于任何字符匹配,您也不需要它.

相关内容