1

我正在尝试基于 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”

谢谢!

4

1 回答 1

1

没有[AND]旗帜。默认情况下,条件是“anded”在一起的。

此外,如果您正在请求/downloads/?file=protected/doc.pdf,则您的正则表达式中有一个太多/的 's:

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}. 因此,您需要将 2 个变量合并为一个RewriteCond并匹配:`%{QUERY_STRING}:::%{HTTP_COOKIE}。然后,您将能够反向引用查询字符串和 cookie。

RewriteCond %{ENV:REDIRECT_STATUS} !200是为了防止重写引擎循环。

于 2012-10-02T22:02:01.780 回答