我的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 :(得分: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
规则缺少这些条件。