2013-07-01 81 views
6

我需要在我的.htaccess文件中使用SetEnvIf在SetEnvIf中添加多個條件

我還需要滿足多個條件然後顯示所需的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. 第二行,我檢查的網址是否以該文本結尾:/press/,如果爲true,我將'press_flag'設置爲1
  3. 第三行,我檢查如果cookie匹配language\_uiAAAenglishBBB文本,如果是真的,那麼我增加1。
  4. 最後一行press_flag價值,我檢查press_flag值是2,那麼我設置相應的HTTP_HOST

但是,當我在瀏覽器中打開URL/press/時,它沒有被重定向。

請幫助調試和修復此代碼。

謝謝。

+0

第二行就沒有意義了,'HTTP_HOST'是域名,無關與URL的_path_段。我沒有看到你在任何地方做任何重定向。 – CBroe

+0

@CBroe:好的。感謝您的更正。那麼,我應該將* HTTP_HOST *替換爲* HOST *嗎? –

+1

沒有,也沒有所謂的'HOST'環境變量 - 如果有,主機將仍然不能等同於「路徑」。 – CBroe

回答

1

我不認爲你可以用SetEnvIf重定向。如果/按要求/

  • 檢查該cookie設置爲一定值

    RewriteCond %{REQUEST_URI} =/press/ 
    RewriteCond %{HTTP_COOKIE} \blanguage=english\b 
    RewriteRule .* /eng/test.html [R] 
    
    1. 檢查:您應該使用mod_rewrite代替。
    2. 重定向規則