5

这是我读过的大多数问题的相反问题。我在带有 Apache 2.2.8 的 Amazon 实例上运行 Ubuntu 8.04,但我不明白为什么将 AllowOverride 设置为 None 并不能阻止包含我的 .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>

谢谢你的帮助。

4

2 回答 2

3

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

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

于 2009-03-03T16:01:43.633 回答
2

AllowOverride只允许在<Directory>-sections 中,所以你做的一切都是正确的。

您可能遇到的一个问题是其他(子)<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)中,我可以使用.htaccesses。

mod_python如果您删除您的设置不再起作用,原因.htaccessmod_python设置通常在.htaccess文件中。

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

PS:事实上,上面链接的文档说你永远应该设置AllowOverride不在None.<Directory />

于 2009-03-03T15:37:58.400 回答