我正在尝试根据Cookie值和查询字符串值重定向,但似乎无法让两个值都正确返回。我正在使用:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_COOKIE} secret=([^;]+) [AND]
RewriteCond %{QUERY_STRING} ^file=(\w+)$
RewriteRule ^downloads/(.*)/$ /downloads/%1/%2
并使用URL“/downloads/?file=protected/doc.pdf”。我想将重定向转到“/ downloads / [secret cookie_val] /protected/doc.pdf”
谢谢!
答案 0 :(得分:1)
没有[AND]
标志。条件默认为“anded”在一起。
此外,如果您要求/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
:
RewriteCond
编辑:刚刚意识到您尝试使用%2
访问之前的%{QUERY_STRING}
后退引用,这将是空白的,因为您已使用RewriteCond
创建了另一个分组。因此,您需要将2个变量合并为一个RewriteCond %{ENV:REDIRECT_STATUS} !200
并匹配:`%{QUERY_STRING} :::%{HTTP_COOKIE}。然后,您将能够反向引用查询字符串和cookie。
{{1}}是为了防止重写引擎循环。