首页 > 解决方案 > 如何检查 .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 吗?

标签: .htaccessmod-rewritecookiesurl-rewritingfriendly-url

解决方案


您能否尝试以下,根据您显示的示例编写。请确保在测试您的 URL 之前清除您的浏览器缓存。

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]

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

推荐阅读