为什么我不能在Apache中禁用.htaccess?

时间:2009-03-03 15:15:34

标签: .htaccess apache2 mod-python

这与我所阅读的大部分内容相反。我在使用Apache 2.2.8的Amazon实例上运行Ubuntu 8.04,我无法弄清楚为什么将AllowOverride设置为None for root并不会阻止我的.htaccess文件被包含在内。

我有一个带有hello.py的子目录和一个.htaccess文件。当我浏览到该文件时,它可以正常使用modpython提供文件。如果我在.htaccess中放入一些垃圾,我会收到服务器错误,所以我知道正在使用.htaccess文件。此外,如果我删除.htaccess文件,则hello.py不再是modpython服务器 - 而是浏览器尝试打开它。

在我的一个站点中(可在站点中链接),我对根目录有“AllowOverride None”。我认为这会阻止.htaccess被包含在root及其所有子目录中,这些子目录应该导致hello.py不被mod_python服务。但是,它仍然可以正常运行,我可以测试.htaccess仍然被包含在内,因为当我修改它时,我会在浏览器中看到结果。

也许在网站启用时我无法理解我的文件。这是我正在使用的文件:

NameVirtualHost *:8080 
<VirtualHost *:8080>
<Directory />
AllowOverride None
</Directory>
</VirtualHost>

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

删除.htaccess时,不通过mod_python提供文件的原因是因为mod_python的设置位于其中。如果您将这些内容移动到您的站点可用文件,您可以删除.htaccess,对问题视而不见,并将其称为一天。

如果这不能满足你,那么至于为什么.htacess正在阅读,我不能说。你是正确的,AllowOverride无应该阻止文件被读取。您是否考虑过在添加虚拟站点时搞砸了什么?尝试在配置中抛出一些垃圾,看看它是否有抱怨,只是为了确保它被读取。

答案 1 :(得分:2)

AllowOverride仅允许<Directory> - 部分,因此您已做好一切。

您可能遇到的一个问题是其他(子)<Directory> - 部分将AllowOverride设置为与None不同的内容。这将覆盖这些子目录的设置。 我用

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride AuthConfig 
    Order allow,deny
    allow from all
</Directory>

/var/www(我的docroot)我可以使用.htaccess es。

如果您删除mod_python.htaccess不再有效的原因是mod_python设置通常位于.htaccess个文件中。

如果您需要更多信息,请将您的配置发送给我们。

PS:事实上,上面链接的文档说明你应该永远AllowOverride设置为None中不是<Directory />的内容。