如果两个变量 HTTP_ORIGIN
和 HTTP_HOST
相等,我希望有一个 rewritecond
得到 true
。我试过了
RewriteCond %{HTTP:Origin} ^http://%{HTTP_HOST}(/|$)
但是,尽管 Netbeans 语法颜色不同,Apache 似乎并未用其值替换 %{HTTP_HOST}
。我猜是因为
RewriteCond %{HTTP:Origin} ^http://cnfr005554(/|$)
RewriteCond %{HTTP_HOST} =cnfr005554
有效。
那么如何测试两个变量 %{HTTP:Origin}
和 %{HTTP_HOST}
是否相等? (是的,它是为了应用 OWASP 指南来缓解 XSRF)
最佳答案
在RewriteCond
中,您不能使用右侧的变量。
你必须像这样使用它:
RewriteCond %{HTTP_HOST}##%{HTTP:Origin} ^(.+)##http://\1(/|$)
这里使用分隔符 ##
连接 2 个变量(可以是任何内容)。然后在 RHS 上,我们匹配并捕获表示 HTTP_HOST
的 ##
之前的值。在 ##
使用反向引用 \1
之后,我们进行匹配。
关于apache - RewriteCond 比较 Apache htaccess 中的两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871983/