Reputation: 1342
I need to use SetEnvIf
in my .htaccess
file.
I also need to satisfy multiple conditions and then, show the required URL.
Here is my code:
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'
Explanation:
press_flag
to 0
. /press/
, if true, the I set the 'press_flag' to 1
.language\_uiAAAenglishBBB
text, if true, then I increment press_flag
value by 1.press_flag
value is 2, then I set the HTTP_HOST
accordingly.But, when I open URL/press/
in browser, it is not getting redirected.
Please help to debug and fix this code.
Thanks.
Upvotes: 8
Views: 6718
Reputation: 5368
Whilst the answer provided by @akond satisfies a solution to the problem;
I do believe this is a good example of using the SetEnvIfExpr
Directive in response to the original OP's question of "Adding multiple conditions in SetEnvIf":
SetEnvIfExpr "%{REQUEST_URI} =~ m#^/press/$# && %{HTTP_COOKIE} == 'language\_uiAAAenglishBBB'" Request_URI='Remote_Host/eng/test.html'
See more details at:
Upvotes: 3
Reputation: 16035
I don't think you can redirect with SetEnvIf
. You should use mod_rewrite
instead:
RewriteCond %{REQUEST_URI} =/press/
RewriteCond %{HTTP_COOKIE} \blanguage=english\b
RewriteRule .* /eng/test.html [R]
Upvotes: 2