apache - RewriteCond 比较 Apache htaccess 中的两个变量

标签 apache .htaccess

如果两个变量 HTTP_ORIGINHTTP_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/

相关文章:

apache - 504网关超时

ruby-on-rails-3 - 设置乘客 : keeps showing apache default page instead

php - 如何通过知道管理页面 url 来防止访问管理页面?

regex - 如何将 www 加入到非 www 重写规则与现有

php - 将 www.foo.com 重定向到 www.bar.com

apache - mod_rewrite 在 [L] 匹配后不停止处理规则?

apache - nginx 中的虚拟目录对应物

regex - .htaccess正则表达式需要使尾随正斜杠成为可选

php - htaccess url 重写许多链接并保护 css 和 js 文件

php - .htaccess 未遵循 RewriteRule