htaccess忽略目录及其子目录

时间:2012-09-12 22:16:37

标签: php .htaccess

我的htaccess文件中有以下内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(mailinglist)/.*$ - [L]
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

如果我在邮件列表目录中,我基本上想要删除htaccess而不是最后一行。

这仅适用于/ mailinglist目录根目录中的项目。一旦我像/ mailinglist / w / 1那样更深入,它会破坏并触及最后的重写规则。如果我在/ mailinglist目录中,如何阻止它处理最后一次重写规则。

原因是我在该目录中有一组不同的htaccess,我不希望这个htaccess控制它。

2 个答案:

答案 0 :(得分:0)

尝试:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^(mailinglist)/.*$
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

我刚刚将mailinglist的检查切换为RewriteCond。如果URI不以mailinglist开头,则条件将仅重写为index.php。

答案 1 :(得分:0)

条件正在应用于错误的规则,您需要更换规则:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(mailinglist)/.*$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

条件仅适用于紧随其后的规则,因此2 !-f!-d条件被误用于直通,而index.php规则缺少这些条件。