为什么我不能在Apache中禁用.htaccess?
-
03-07-2019 - |
题
这与我所阅读的大部分内容相反。我在使用Apache 2.2.8的Amazon实例上运行Ubuntu 8.04,我无法弄清楚为什么将AllowOverride设置为None for root并不会阻止我的.htaccess文件被包含在内。
我有一个带有hello.py的子目录和一个.htaccess文件。当我浏览到该文件时,它可以正常使用modpython提供文件。如果我在.htaccess中放入一些垃圾,我会收到服务器错误,所以我知道正在使用.htaccess文件。此外,如果我删除.htaccess文件,则hello.py不再是modpython服务器 - 而是浏览器尝试打开它。
在我的其中一个网站中(已启用网站链接),我有<!>“; AllowOverride无<!>”;对于根目录。我认为这会阻止.htaccess被包含在root及其所有子目录中,这些子目录应该导致hello.py不被mod_python服务。但是,它仍然可以正常运行,我可以测试.htaccess仍然被包含在内,因为当我修改它时,我会在浏览器中看到结果。
也许在网站启用时我无法理解我的文件。这是我正在使用的文件:
NameVirtualHost *:8080
<VirtualHost *:8080>
<Directory />
AllowOverride None
</Directory>
</VirtualHost>
感谢您的帮助。
解决方案
删除.htaccess时,不通过mod_python提供文件的原因是因为mod_python的设置位于其中。如果您将这些内容移动到您的站点可用文件,您可以删除.htaccess,对问题视而不见,并将其称为一天。
如果这不能满足你,那么至于为什么.htacess正在阅读,我不能说。你是正确的,AllowOverride无应该阻止文件被读取。您是否考虑过在添加虚拟站点时搞砸了什么?尝试在配置中抛出一些垃圾,看看它是否有抱怨,只是为了确保它被读取。
其他提示
AllowOverride
仅允许<= > - 部分,所以你已经做好了一切。
您可能遇到的一个问题是其他(sub - )<Directory>
- 部分将None
设置为与/var/www
不同的部分。这将覆盖这些子目录的设置。
我用
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
</Directory>
和.htaccess
(我的docroot)我可以使用mod_python
es。
如果删除<Directory />
,<=>不再起作用的原因是<=>设置通常位于<=>文件中。
如果您需要更多信息,请将您的配置发送给我们。
PS:事实上,上面提到的文件说明你应该从不>将<=>设置为<=>中的<=>。