如何防止.htaccess继承?

Mic*_*l M 3 apache .htaccess

AFAIK 默认情况下解析所有目录中指向请求文件的所有 .htaccess 文件,即在此设置中:

  • DOC_ROOT = /usr/local/www/data
  • AllowOverride设置为All上面目录中的

如果请求的文件为/dir1/dir2/dir3/file/则将检查从下往上的所有文件夹中是否有.htaccess。如果找到该文件,则会对其进行解析,然后根据文件的组合内容继续执行.htaccess

这是我的设置:

  • DOC_ROOT = /usr/local/www/data- 这是保存所有静态文件和 php 文件的地方。
  • .htaccess其中有一个DOC_ROOT重写了对index.php的所有请求(除了一些请求)。
  • /Python/root.wsgi在 httpd.conf中有一个DOC_ROOTWSGIScriptAlias /apps /usr/local/www/data/Python/root.wsgi

正如您可以想象的那样,我根本不希望将 .htaccess 用于 /Python 文件夹,但事实确实如此。我该如何预防?

我尝试在 httpd.conf 中进行设置,但它不起作用:

<Directory "/usr/local/www/apache22/data/Python">
    AllowOverride None
</Directory>
Run Code Online (Sandbox Code Playgroud)

如果我确实将 .htaccess 放入 Python 文件夹中RewriteEngine off,似乎可以完成这项工作,但我不想被迫将这样的文件放入每个子文件夹中,我不想使用 root .htaccess 。

slu*_*ion 5

遗憾的是,没有办法禁用继承。一种更简单的方法可能是在您的 Web 根目录中为“其他所有内容”创建一个文件夹,然后在其中的 .htaccess 中放置该RewriteEngine off语句。

我认为你可以做一些事情来RewriteCond禁用它。如果您希望所有子文件夹都可以访问(并重写与现有子文件夹不匹配的任何内容),您可以使用RewriteCond !-d.