.htaccess - htaccess 中的变量,RewriteRule 问题

我如何使用 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/

相关文章:

iphone - 在应用程序声音中禁用

sql-server - SQL Server 压力测试工具?

.htaccess - 多语言站点,基于 cookie 或接受语言的重定向 (RewriteRule

android - 连接到另一台机器上的 Android 模拟器

macos - 在 Mac OS X 上对文件更改运行脚本

maven-2 - 使用 JMeter + Maven 和 https 协议(protocol)

.net - 是否有将图像重新抗锯齿为不同背景颜色的技术?

logging - Jmeter 虽然在本地工作,但在其他环境中不起作用

visual-studio - 如何创建支持多实例(多次安装)的安装工程?

django - 有没有办法修改 Django FileField 使用的存储后端?