如何为RewriteCond使用htaccess反向引用变量?

时间:2016-10-09 16:04:57

标签: .htaccess mod-rewrite

我想将PHPSESSID与URL的查询字符串部分(?session_id = b0300e9317e626da2c3f9a45e28b5106)进行匹配。但我无法做到这一点。我认为第二条规则似乎不起作用。我错了什么?

RewriteCond %{HTTP_COOKIE} !PHPSESSID=(\w+) [NC]
RewriteCond %{HTTP_COOKIE}:%{QUERY_STRING} ^PHPSESSID=(.*?);:(?!.*?session_id=\1).* [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/? [R=302,L,NC]

1 个答案:

答案 0 :(得分:0)

第一个OR上缺少RewriteCond个标记,两个条件都被破坏了。它应该是这样的:

RewriteCond %{HTTP_COOKIE} !(?:^|\s)PHPSESSID= [OR]
RewriteCond %{HTTP_COOKIE};;%{QUERY_STRING} !(?:^|\s)PHPSESSID=([^;]+).*?;;(?:.*?&)?session_id=\1(?:$|&)
RewriteRule ^ https://%{HTTP_HOST}/? [R=302,L]