如果URL指向:
,我试图对所有请求进行重写除外所以我有以下应该处理它:
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ redirect.php [QSA]
但是当我导航到包含index.php
的文件夹时(是的,我已经检查过DirectoryIndex
设置为index.php
),它仍会执行重写。
我发现有趣的是,如果我在.htaccess
的文件夹中有一个RewriteEngine on
(只是那个),那么上面的重写规则就可以了......
任何指针?
答案 0 :(得分:4)
您需要检查目录部分:
RewriteCond %{REQUEST_FILENAME}/index\.php !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ redirect.php [QSA,L]
此外:
我发现有趣的是,如果我在该文件夹中有一个带有RewriteEngine的.htaccess(就是那个),那么上面的重写规则就可以了......
这是因为子目录中的重写规则优先于父目录中的任何规则。因此,如果您有一个RewriteEngine On
的子目录,没有规则,那么这意味着子目录优先于父目录中的重写规则,并且没有规则。 (有点令人困惑)。
答案 1 :(得分:4)
在根目录中尝试此规则.htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1/index.php !-f
RewriteRule ^(.*?)/?$ redirect.php [L]