RewriteCond 比较 Apache htaccess 中的两个变量

Xen*_*nos 2 apache .htaccess

我想有一个rewritecond是得到true两个变量HTTP_ORIGINHTTP_HOST是平等的。我试过

RewriteCond %{HTTP:Origin} ^http://%{HTTP_HOST}(/|$)
Run Code Online (Sandbox Code Playgroud)

但是,尽管 Netbeans 的语法颜色不同,但 Apache 似乎并没有%{HTTP_HOST}被它的价值所取代。我猜是因为

RewriteCond %{HTTP:Origin} ^http://cnfr005554(/|$)
RewriteCond %{HTTP_HOST} =cnfr005554
Run Code Online (Sandbox Code Playgroud)

作品。

所以,我怎么可以测试两个变量%{HTTP:Origin}%{HTTP_HOST}是平等的?(是的,这是为了应用 OWASP 的指南来缓解 XSRF)

anu*_*ava 5

RewriteCond您不能在右侧使用变量。

你必须像这样使用它:

RewriteCond %{HTTP_HOST}##%{HTTP:Origin} ^(.+)##http://\1(/|$)
Run Code Online (Sandbox Code Playgroud)

这是使用分隔符连接 2 个变量##(它可以是任何东西)。然后在 RHS 上,我们匹配并捕获##代表之前的值HTTP_HOST。之后##使用反向引用\1,我们做我们的匹配。