我希望有人在htaccess中使用if-else语句来帮助我。 我想要的是htaccess读取一个cookie并检查它的值是否等于一个定义的值。 如果计算结果为false,则应该优先执行redirect,并阻止访问请求的文件夹。 如果评估结果不真实,也许所有的否定会更好。
我知道下面的代码检查是否设置了一个命名的cookie值。 如果没有设置,它将执行它下面的重写规则。 但是,我怎么能调整这条线,以便检查它是否等于某个值?
RewriteEngine On RewriteCond %{HTTP_COOKIE} !^.*cookie_name.*$ [NC] RewriteRule .* http://www.google.com [NC,L]
我想要什么,但在.htaccess风格:
if ($_COOKIE['cookie_name'] != 'specific_value'){ //rewrite_rule or deny from all. }
你很近 Cookie字符串需要a =
:
RewriteEngine On RewriteCond %{HTTP_COOKIE} !cookie_name=specific_value; [NC] RewriteRule ^ http://www.google.com [NC,L]
将required_value
替换为required_value
匹配的值。
RewriteEngine On RewriteCond %{HTTP_COOKIE} !cookie_name=required_value;? [NC] RewriteRule ^ http://www.google.com [R=301,L]
;?
确保在存在多个cookie值对时或cookie_name
是唯一的cookie集时都会发生匹配。 这也可以防止匹配一个cookie值,如只匹配一个(一个子字符串)是必需的。
您可以使用此代码来检查Cookie中的特定值:
RewriteEngine On RewriteCond %{HTTP_COOKIE} !cookie_name=specific_value [NC] RewriteRule ^ http://www.google.com [NC,L,R=302]