繁体   English   中英

如何在.htaccess重定向中使用两个变量?

[英]How do I get two variables to use in an .htaccess redirect?

我正在尝试根据Cookie值和查询字符串值进行重定向,但似乎无法使两个值都能正确返回。 我正在使用:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_COOKIE} secret=([^;]+) [AND]
RewriteCond %{QUERY_STRING} ^file=(\w+)$
RewriteRule ^downloads/(.*)/$ /downloads/%1/%2

并使用网址“ /downloads/?file=protected/doc.pdf”。 我想重定向到“ / downloads / [secret cookie_val] /protected/doc.pdf”

谢谢!

没有[AND]标志。 默认情况下,条件一起“与”。

另外,如果您请求/downloads/?file=protected/doc.pdf ,则正则表达式中的/太多了:

RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING}:::%{HTTP_COOKIE} ^file=(\w+):::secret=([^;]+)
RewriteRule ^downloads/(.*)/?$ /downloads/%2/%1

编辑:刚意识到您正在尝试使用%2访问先前的RewriteCond反向引用,该引用将为空白,因为您已经用%{QUERY_STRING}创建了另一个分组。 因此,您需要将2个变量组合为一个RewriteCond并与以下对象进行匹配:%{QUERY_STRING} :::%{HTTP_COOKIE}。 然后,您将能够同时反向引用查询字符串和cookie。

RewriteCond %{ENV:REDIRECT_STATUS} !200用于防止重写引擎循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM