因此,我有一个在example.com上运行的站点,并且充当了在文件夹/drupal
中运行的Drupal站点的网关。我想做的是,我想在登录时在该网关页面上设置一个cookie,然后允许访问example.com/drupal,如果未设置cookie,请重定向回example.com。
但是我的问题是,该规则在drupal .htaccess的/drupal
文件夹中不起作用,但是我对其进行了测试,并且在根目录中也可以正常工作。
规则如下
RewriteCond %{HTTP_COOKIE} !CookieName=test [NC]
RewriteRule .* http://example.com [L]
但是由于某种原因,该规则在这里不起作用,用户可以在没有cookie的情况下访问/ drupal文件夹,但是如果我在/ root中放置相同的规则,则会发生重定向,因为未设置该名称的cookie
答案 0 :(得分:2)
快速测试以确保其正常工作,这是一个示例
/.htaccess
RewriteEngine On
# if no "logged_in" cookie set to "yes", then create it
# cookie is valid for any hosts of .example.com, during 1 minute, for the entire website, not necessarily ssl only, not accessible from javascript
RewriteCond %{HTTP_COOKIE} !logged_in=yes [NC]
RewriteRule ^ - [CO=logged_in:yes:.example.com:1:/:false:true]
有关CO
标志文档(如何通过mod_rewrite
创建cookie),请参见this link
/drupal/.htaccess
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !logged_in=yes [NC]
RewriteRule ^ /index.php [R,L]
/drupal/
,您应该重定向到根索引/drupal/
,应该可以(因为根索引创建了cookie)/drupal/
),然后您将再次获得到根索引的重定向(cookie已过期)我想到了两个为什么无法使它起作用的原因
/drupal/.htaccess
规则未执行,因为它位于main-default规则之后(将其放在顶部以确保)