Apache 如何防止.htaccess继承?

Apache 如何防止.htaccess继承?,apache,.htaccess,Apache,.htaccess,AFAIK默认情况下,解析指向请求文件的所有目录中的所有.htaccess文件,即在此设置中: DOC\u ROOT=/usr/local/www/data 上述目录中的AllowOverride设置为All 如果请求位于/dir1/dir2/dir3/file的文件,则将检查/下的所有文件夹是否有.htaccess。如果找到该文件,将对其进行解析,然后根据.htaccess文件的组合内容继续执行 下面是我的设置: DOC\u ROOT=/usr/local/www/data——所有静态和

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

  • DOC\u ROOT=/usr/local/www/data
  • 上述目录中的
    AllowOverride
    设置为
    All
如果请求位于
/dir1/dir2/dir3/file
的文件,则将检查
/
下的所有文件夹是否有
.htaccess
。如果找到该文件,将对其进行解析,然后根据
.htaccess
文件的组合内容继续执行

下面是我的设置:

  • DOC\u ROOT=/usr/local/www/data
    ——所有静态和php文件都保存在这里
  • DOC\u ROOT
    中有一个
    .htaccess
    ,它重写了index.php的所有请求,但有些请求除外
  • DOC_root
    中有一个
    /Python/root.wsgi
    ,在httpd.conf中有这样一个:
    WSGIScriptAlias/apps/usr/local/www/data/Python/root.wsgi
正如您所想象的,我根本不想在/Python文件夹中使用.htaccess,但它确实是。我如何预防它

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

<Directory "/usr/local/www/apache22/data/Python">
    AllowOverride None
</Directory>

不允许超限

如果我确实将.htaccess放在Python文件夹中,并且关闭了
RewriteEngine
,这似乎可以完成任务,但我不想被迫将这样的文件放在每个子文件夹中,我不想使用.htaccess作为根目录。

很遗憾,没有办法禁用继承。更简单的方法是在web根目录中为“其他所有内容”创建一个文件夹,然后在其中的.htaccess中,关闭
RewriteEngine
语句


我认为您可以使用
RewriteCond
来禁用此功能。如果希望所有子文件夹都可以访问(并重写与现有子文件夹不匹配的任何内容),可以使用
RewriteCond-d

最简单的方法是按目录在站点的.htaccess根目录中设置

假设您有一个子目录“Python”,您将把它添加到DOCROOT中的.htaccess中


重写规则^Python/*$-[L]

并且您不能通过AllowOverride选项更改此规则?回答我自己的问题-AllowOverride在每个目录的基础上工作,即,如果在某个文件夹上设置为“无”,则该文件夹是启用了它的文件夹的子文件夹,将解析其父文件夹的.htaccess,但不会解析其自己的.htaccess。