即使VirtualHost具有“AllowOverride All”,.htaccess也会被忽略

我在Fedora 13上运行LAMP服务器,工作正常。 不过,我刚刚添加一个“.htaccess”文件到我当前站点的docroot文件夹被完全忽略。

我已经尝试了六种不同的testing,包括这一个:

RewriteEngine on RewriteBase / RewriteRule ^.*$ index.php 

但图像和所有其他网页加载罚款,而不存在的文件仍然404。我也试过这个:

 order deny,allow deny from all 

但每页仍然加载正常。 .htaccess文件再次被100%忽略。

我们把我们的虚拟主机logging放在/etc/httpd/conf.d/virtual.conf中。 它看起来像这样:

 NameVirtualHost * <VirtualHost *> ServerName intranet DocumentRoot /var/www/default <Directory "/var/www/default"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *> ServerName ourwebsite.com DocumentRoot /var/www/html/ourwebsite.com/docroot <Directory "/var/www/html/ourwebsite.com/docroot"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> 

还有什么可能导致我们的服务器完全忽略.htaccess文件?

编辑:

我将.htaccess文件更改为上面,以更好地表明我的更改被忽略。 请注意,我尝试生产服务器上完全相同的.htaccess文件,它工作正常。

编辑2:

好的,我有新的信息! 仅用于testing目的,我通过并暂时将每个“AllowOverride”指令更改为AllowOverride All 。 我发现第一个目录条目似乎压倒了所有其他的:

 <Directory /> Options FollowSymLinks AllowOverride None </Directory> 

当我将其更改为AllowOverride All ,我的.htaccess文件开始生效。 就像所有其他AllowOverride All我的configuration文件中的AllowOverride All指令都被忽略!

是什么赋予了??

    难以置信的。 请记住我是如何说这是一个开发服务器? 是啊..以下是我的虚拟主机条目真正的样子:

     <VirtualHost *> ServerName dev.ourwebsite.com DocumentRoot /var/www/html/dev.ourwebsite.com/docroot <Directory "/var/www/html/ourwebsite.com/docroot"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> 

    你看到了吗? 那么我没有。 我忘了把我的“目录”条目改为dev.ourwebsite.com,而不是我们的网站.com,这一切都变了。 我只是假定如果目录不存在,Apache会抛出一个错误; 但只适用于DocumentRoot指令。 是基于匹配的 – 意思是如果匹配传入的请求,则应用规则,否则,不关心是否将它告诉AllowOverride在魔法独angular兽上。

    让这个教训给所有其他人来看 – 当其他的都失败时,考虑全能的错字。

    检查虚拟主机声明之上的“httpd.conf”中是否有其他的“AllowOverride None”。 可能你在docroot中有“AllowOverride None”。

    三个猜测:

    在行order deny, allow的逗号后面实际上是否有空格, .htaccess order deny, allow.htaccess ? Apache不喜欢这样。 对F13我来说,我得到了500。

    你有一个AccessFileName指令在任何地方?

    如果你使用的是selinux,你有正确的上下文文件( ls -lZ )吗?