0

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

4

2 回答 2

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>

我刚刚将检查切换为mailinglistRewriteCond。仅当 URI 不以 . 开头时,该条件才会重写为 index.php mailinglist

于 2012-09-12T22:24:50.063 回答
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规则缺少这些条件。

于 2012-09-12T22:25:04.190 回答