2012-09-12 96 views
0

我在我的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来控制它。

+0

感谢Jon和Drew!我现在的问题是,当我在邮件列表目录深入2个子目录时,这个条件不再适用。我仍然在学习使用HTACCESS的REGEX,不确定要添加什么才能识别许多子目录。 – csteel

回答

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。

+0

当我深入2个目录,即'http:// www.example.com/mailinglist/w/1'时,它会碰到RewriteRule。如果它在邮件列表目录中,我该如何防止它重击那个RewriteRule? – csteel

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条件被误用的passthrough,而index.php规则缺少这些条件。