我如何使用 RewriteRule 访问变量?
如果我有:
SetEnv MY_VAR (a|b|c)
RewriteRule ^%{ENV:MY_VAR}$ index.php?s=$1 [L,QSA]
RewriteRule ^%{ENV:MY_VAR}-some-one$ index.php?s=$1 [L,QSA]
我有这些示例,但不起作用。
稍后编辑
好的,蒂姆,谢谢你的回答。假设我有:
RewriteRule ^(skoda|bmw|mercedes)-([0-9]+)-([0-9]+)-some-think$ index.php?a=$1 [L,QSA]
RewriteRule ^some-one-(skoda|bmw|mercedes)/pag-([0-9]+)$ index.php?a=$1 [L,QSA]
RewriteRule ^a-z-(skoda|bmw|mercedes)$ index.php?a=$1 [L,QSA]
(忘记 RewriteRule 的第二部分).. 我不想把这个列表放在任何地方(skoda|bmw|mercedes)。创建变量然后在规则中使用它更快......
最佳答案
你不能这样做,因为 mod_rewrite
不会在正则表达式子句中扩展变量。
您只能在 RewriteCond
的输入参数中使用变量,并作为 RewriteRule
的结果参数。编译正则表达式会产生开销(特别是如果您被迫像使用 .htaccess
文件一样按请求执行此操作),因此如果您允许其中包含可变内容,则必须重新编译它们对于每次比较,以牺牲性能为代价确保准确性。因此,解决方案似乎是不让您这样做。
无论如何,你到底想做什么?
https://stackoverflow.com/questions/3203058/