htaccess 忽略现有文件夹的目录和子目录

htaccess ignore directory and subdirectories of existing folder

我有以下结构

- .htaccess
- cms
- other_cms
-- xyz

.htaccess 中,我有很多重写规则,我想忽略 /other_cms

我在 .htaccess 之上添加了以下内容

RewriteEngine On
RewriteRule ^other_cms/ - [L]
RewriteRule ^other_cms/test/ - [L]
RewriteRule ^other_cms(/.*)?$ - [L,NC]
    
RewriteCond %{REQUEST_URI} ^other_cms/(.*)$
RewriteRule ^.*$ - [L]

我的目标是 /other_cms 的每个子目录(无论它是否真的存在)和 /other_cms 本身都被根目录中的 .htaccess 文件忽略。

我还尝试为每个规则添加条件:

RewriteCond %{REQUEST_URI} !^other_cms(/.*|)$

当我打开 /other_cms/test 时,它仍然调用所有规则并应用 /cms 的 404。

我已将 .htaccess 文件添加到 /other_cms,包括 RewriteEngine Off,但我想这从未被读取过。

我做错了什么?

我在根 .htaccess 文件的顶部使用以下内容解决了它:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^other_cms/(.+)$ /other_cms/index.html?u= [NC,QSA,L]

我删除了 other_cms/ 文件夹中的 .htaccess 文件。

这确保它使用我的子文件夹的 index.html 文件。