RewriteCond比较Apache htaccess中的两个变量

时间:2016-11-29 17:23:17

标签: apache .htaccess

如果两个变量rewritecondtrue相等,我希望HTTP_ORIGIN获得HTTP_HOST。我试过了

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)

1 个答案:

答案 0 :(得分:3)

RewriteCond中,您无法在右侧使用变量。

你必须像这样使用它:

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

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