The*_*Law 11 .htaccess mod-rewrite drupal
所以我有一个在example.com上运行的站点,作为在文件夹中运行的Drupal站点的网关/drupal.我想做什么,我想在登录时在该网关页面上设置一个cookie,然后允许访问example.com/drupal,如果没有设置cookie,则重定向回example.com.
但我的问题是,该规则/drupal在drupal .htaccess 中的文件夹中不起作用,但我测试了它并且在根目录中工作正常.
规则如下
RewriteCond %{HTTP_COOKIE} !CookieName=test [NC]
RewriteRule .* http://example.com [L]
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,规则在这里不起作用,用户可以在没有cookie的情况下访问/ drupal文件夹,但是如果我在/ root中放置相同的规则,则会发生重定向,因为没有设置具有该名称的cookie.
在我这边进行快速测试以确保其有效,这是一个示例
/.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]
Run Code Online (Sandbox Code Playgroud)
请参阅此链接以获取CO标志文档(如何通过创建 cookie mod_rewrite)
/drupal/.htaccess
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !logged_in=yes [NC]
RewriteRule ^ /index.php [R,L]
Run Code Online (Sandbox Code Playgroud)
/drupal/,您应该会重定向到根索引/drupal/应该就可以了(因为根索引已经创建了cookie)/drupal/) 任意次数,然后您将再次重定向到根索引(cookie 已过期)我想到了为什么你不能让它发挥作用的两个原因
/drupal/.htaccess规则未执行,因为放置在 main-default 规则之后(将其放在顶部以确保)