如果评估返回true/false,则htaccess比较cookie值并重定向

Gil*_*ong 9 regex apache cookies .htaccess mod-rewrite

我希望有人帮助我在htaccess中使用if-else语句.我想要的是htaccess读取cookie并检查其值是否等于定义的值.如果它的计算结果为false,则应该执行重定向并阻止访问所请求的文件夹.如果评估返回false,那么拒绝所有人会更好.

我知道以下代码检查是否设置了命名的cookie值.如果未设置,它将在其下面执行重写规则.但是如何调整此行以便检查它是否等于某个值?

RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*cookie_name.*$ [NC]
RewriteRule .* http://www.google.com [NC,L]
Run Code Online (Sandbox Code Playgroud)

我想要什么,但是.htaccess风格:

if ($_COOKIE['cookie_name'] != 'specific_value'){
//rewrite_rule or deny from all.
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*Lin 15

你很亲密 cookie字符串需要=:

RewriteEngine On
RewriteCond %{HTTP_COOKIE} !cookie_name=specific_value; [NC]
RewriteRule ^ http://www.google.com [NC,L]
Run Code Online (Sandbox Code Playgroud)

  • 对于单个或多个 Cookie,应该有模式“;?”。如果站点上存在单个 Cookie,则该模式将不起作用。更新后的解决方案可以完成以下任务:`RewriteEngine On RewriteCond %{HTTP_COOKIE} !cookie_name=specific_value;? [NC] RewriteRule ^ http://www.google.com [NC,L]` (3认同)

Rav*_*yal 7

替换required_value为需要匹配的值.

RewriteEngine On
RewriteCond %{HTTP_COOKIE} !cookie_name=required_value;? [NC]
RewriteRule ^ http://www.google.com [R=301,L]
Run Code Online (Sandbox Code Playgroud)

;?确保在有多个cookie值对或何时cookie_name是唯一的cookie集时匹配发生.这也可以防止在cookie值上匹配,就像off需要匹配of(子字符串)时一样.