如何检查 .htaccess 中是否设置了多个 cookie?
How to check multiple cookies are set in .htaccess?
我正在检查 .htaccess
文件中名为“user”的单个 cookie。如果设置了 cookie,则重定向到 index.html
页面,如果未设置 cookie,则重定向到 index.php
页面。我不确定这是否是检查 cookie 是否存在的正确方法,但这是我的 .htaccess
规则:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} user;? [NC]
RewriteRule ^(.+)$ index.html?url= [QSA,L]
RewriteCond %{HTTP_COOKIE} !user;? [NC]
RewriteRule ^(.+)$ index.php?url= [QSA,L]
但是假设如果我还有一个名为“login”的 cookie,那么我们如何在这个 .htaccess
文件中检查它?
我是否需要为那个特定的 cookie 重复以上相同的代码行?我们可以在单个条件或行中检查多个 cookie 吗?
能否请您尝试以下内容,根据您显示的示例编写。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine On
RewriteCond %{HTTP_COOKIE} user;? [NC,OR]
RewriteCond %{HTTP_COOKIE} login;? [NC]
RewriteRule ^(.+)$ index.html?url= [QSA,L]
RewriteCond %{HTTP_COOKIE} !user;? [NC]
RewriteRule ^(.+)$ index.php?url= [QSA,L]
或者在单个规则集内尝试。请确保一次使用上述规则或仅遵循一个规则。
RewriteEngine On
RewriteCond %{HTTP_COOKIE} (user|login);? [NC]
RewriteRule ^(.+)$ index.html?url= [QSA,L]
RewriteCond %{HTTP_COOKIE} !user;? [NC]
RewriteRule ^(.+)$ index.php?url= [QSA,L]
Can we check multiple cookies in a single condition or line?
是的,你可以使用这样的条件:
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=[=10=] [QSA,L]
# execute when neither of above cookies are set
RewriteRule .+ index.php?url=[=10=] [QSA,L]
我正在检查 .htaccess
文件中名为“user”的单个 cookie。如果设置了 cookie,则重定向到 index.html
页面,如果未设置 cookie,则重定向到 index.php
页面。我不确定这是否是检查 cookie 是否存在的正确方法,但这是我的 .htaccess
规则:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} user;? [NC]
RewriteRule ^(.+)$ index.html?url= [QSA,L]
RewriteCond %{HTTP_COOKIE} !user;? [NC]
RewriteRule ^(.+)$ index.php?url= [QSA,L]
但是假设如果我还有一个名为“login”的 cookie,那么我们如何在这个 .htaccess
文件中检查它?
我是否需要为那个特定的 cookie 重复以上相同的代码行?我们可以在单个条件或行中检查多个 cookie 吗?
能否请您尝试以下内容,根据您显示的示例编写。 请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine On
RewriteCond %{HTTP_COOKIE} user;? [NC,OR]
RewriteCond %{HTTP_COOKIE} login;? [NC]
RewriteRule ^(.+)$ index.html?url= [QSA,L]
RewriteCond %{HTTP_COOKIE} !user;? [NC]
RewriteRule ^(.+)$ index.php?url= [QSA,L]
或者在单个规则集内尝试。请确保一次使用上述规则或仅遵循一个规则。
RewriteEngine On
RewriteCond %{HTTP_COOKIE} (user|login);? [NC]
RewriteRule ^(.+)$ index.html?url= [QSA,L]
RewriteCond %{HTTP_COOKIE} !user;? [NC]
RewriteRule ^(.+)$ index.php?url= [QSA,L]
Can we check multiple cookies in a single condition or line?
是的,你可以使用这样的条件:
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=[=10=] [QSA,L]
# execute when neither of above cookies are set
RewriteRule .+ index.php?url=[=10=] [QSA,L]