2009-03-03 36 views
5

这是我读过的大多数相反的问题。我在使用Apache 2.2.8的亚马逊实例上运行Ubuntu 8.04,我无法弄清楚为什么为root设置AllowOverride为None不会阻止包含我的.htaccess文件。为什么我不能在Apache中禁用.htaccess?

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

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

也许有一些我不了解我的文件在启用网站。这是我正在使用的文件:

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

感谢您的任何帮助。

+0

虽然AllowOverride None应该阻止它读取.htaccess文件,但我注意到您的配置中没有包含有关mod_python(即AddHandler mod_python .py)的内容。 .htaccess文件中有什么? – Pesto 2009-03-03 15:35:09

+0

。htaccess的: 的AddHandler的mod_python的.py PythonHandler mptest PythonDebug论 和在mptest.py: 从mod_python的进口阿帕奇 DEF处理程序(REQ): req.log_error( '处理') req.content_type =“文本/ plain' req.send_http_header() req.write(“Hello World!”) return apache.OK – Mitch 2009-03-03 15:37:42

回答

3

当您删除.htaccess时,不通过mod_python提供文件的原因是因为mod_python的设置位于其中。如果你将这些东西移动到你的网站可用文件中,你可以删除.htaccess,对问题视而不见,然后每天给它打电话。

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

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(我的文档根目录),我可以使用.htaccess ES。

之所以如果您删除.htaccessmod_python设置通常是.htaccess文件mod_python不工作了。

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

PS:其实上面链接的docuementation说,你应该永远设置<Directory />AllowOverride东西不None

相关问题