微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查 .htaccess 中设置的多个 cookie?

如何解决如何检查 .htaccess 中设置的多个 cookie?

我正在检查 .htaccess 文件中名为“user”的单个 cookie。如果设置了 cookie,则重定向index.html 页,如果未设置 cookie,则重定向index.PHP 页。我不确定这是否是检查 cookie 存在的正确方法,但这是我的 .htaccess 规则:

RewriteEngine On

RewriteCond %{HTTP_COOKIE} user;? [NC]
RewriteRule ^(.+)$ index.html?url=$1 [QSA,L]

RewriteCond %{HTTP_COOKIE} !user;? [NC]
RewriteRule ^(.+)$ index.PHP?url=$1 [QSA,L]

但是假设如果我还有一个名为“login”的 cookie,那么我们如何在这.htaccess 文件中检查它?

我是否需要为那个特定的 cookie 重复上述相同的代码行?我们可以在一个条件或一行中检查多个 cookie 吗?

解决方法

您能否尝试以下内容,根据您显示的样本编写。 在测试您的网址之前,请务必清除浏览器缓存。

RewriteEngine On

RewriteCond %{HTTP_COOKIE} user;? [NC,OR]
RewriteCond %{HTTP_COOKIE} login;? [NC]
RewriteRule ^(.+)$ index.html?url=$1 [QSA,L]

RewriteCond %{HTTP_COOKIE} !user;? [NC]
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]


或在单个规则集内尝试。请确保您使用上述规则或一次只遵循一个规则。

RewriteEngine On

RewriteCond %{HTTP_COOKIE} (user|login);? [NC]
RewriteRule ^(.+)$ index.html?url=$1 [QSA,L]
,

我们可以在一个条件或一行中检查多个 cookie 吗?

是的,您可以使用这样的条件:

RewriteEngine On

RewriteRule ^index\.(php|html)$ - [L,NC]

# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# execute when either of these cookies are set
RewriteCond %{HTTP_COOKIE} (^|;)(user|login)= [NC]
RewriteRule .+ index.html?url=$0 [QSA,L]

# execute when neither of above cookies are set
RewriteRule .+ index.php?url=$0 [QSA,L]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。