这与我所阅读的大部分内容相反。我在使用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>
感谢您的帮助。
答案 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 />
的内容。