如何使这项工作? RewriteCond%{ENV:UNIQUE_ID}!%{QUERY_STRING}

时间:2009-04-07 14:45:33

标签: apache mod-rewrite

/foo/.htaccess执行内部重定向

RewriteRule ^(.*)$ /bar/?%{ENV:UNIQUE_ID}

/bar/.htaccess需要认识到请求不是内部的,问题是我无法弄清楚如何使比较工作

RewriteCond %{ENV:UNIQUE_ID} !%{QUERY_STRING}

即使是

RewriteCond %{QUERY_STRING} %{QUERY_STRING}

不匹配,我想表达式的右边有一个语法问题,转义%没有帮助。

我测试了上述两个变量在内部重定向上的值与

相同
RewriteRule ^(.*)$ /test/%{QUERY_STRING}/%{ENV:UNIQUE_ID} 

会显示出来。

服务器是Apache / 2.2.3

谢谢, Laurian

2 个答案:

答案 0 :(得分:15)

遗憾的是,您无法直接将两个变量与mod_rewrite进行比较。 (或者至少我不知道怎么做。)

但是有一个解决方法:

RewriteCond %{ENV:UNIQUE_ID}:%{QUERY_STRING} !^(.+):\1$

我选择:作为分隔符,但如果您愿意,可以使用任何其他分隔符。如果您可以指定UNIQUE_ID值的结构,则应该这样做。

答案 1 :(得分:0)

如果引荐来源与您所在的域名不同,例如第一次访问但未使用您自己网站中的链接,则可以检查HTTP_REFERRER。相同的技术用于防止图像热链接。