8

我需要SetEnvIf在我的.htaccess文件中使用。

我还需要满足多个条件,然后显示所需的 URL。

这是我的代码:

SetEnvIf Remote_Host "^" press_flag=0
SetEnvIf Request_URI '/press/$' press_flag=1
SetEnvIf Cookie 'language\_uiAAAenglishBBB' press_flag=press_flag+1
SetEnvIf press_flag 2 Request_URI='Remote_Host/eng/test.html'

解释:

  1. 在第一行中,我将一个变量设置press_flag0.
  2. 第二行,我检查URL是否以此文本结尾: /press/如果为真,我将 'press_flag' 设置为1
  3. 第三行,我检查 cookie 是否与language\_uiAAAenglishBBB文本匹配,如果为真,则将press_flag值增加 1。
  4. 最后一行,我检查press_flag值是否为 2,然后我HTTP_HOST相应地设置。

但是,当我URL/press/在浏览器中打开时,它没有被重定向。

请帮助调试和修复此代码。

谢谢。

4

2 回答 2

2

虽然@akond 提供的答案满足了问题的解决方案;

我确实相信这是使用SetEnvIfExpr指令来回应原始 OP 的“在 SetEnvIf 中添加多个条件”的问题的一个很好的例子:

SetEnvIfExpr "%{REQUEST_URI} =~ m#^/press/$# && %{HTTP_COOKIE} == 'language\_uiAAAenglishBBB'" Request_URI='Remote_Host/eng/test.html'

在以下位置查看更多详细信息:

于 2020-11-10T23:51:52.117 回答
1

我不认为你可以用 重定向SetEnvIf。您应该mod_rewrite改用:

RewriteCond %{REQUEST_URI} =/press/
RewriteCond %{HTTP_COOKIE} \blanguage=english\b
RewriteRule .* /eng/test.html [R]
  1. 检查是否请求 /press/
  2. 检查 cookie 是否设置为某个值。
  3. 重定向规则
于 2017-08-07T08:14:16.567 回答