HTTP 500使用FallbackResource和mass vhost配置

时间:2014-01-03 05:15:39

标签: apache .htaccess configuration httpd.conf

上下文

我将Apache 2.2.15配置为大规模虚拟主机,如下所示:

<VirtualHost *:80>
    # ...irrelevant lines omitted
    VirtualDocumentRoot /srv/www/%-3+
    ServerName example.com
    ServerAlias localhost
</VirtualHost>

mkdir /srv/www/foo使foo.example.com可用。

<小时/>

问题

当phost文档根目录中包含 a foo.example.com指令的.htaccess时,

来自所有FallbackResource的HTTP 500。注释掉FallbackResource会删除错误,但我想使用FallbackResource

<小时/>

试过的东西

我确认使用httpd -M | grep dir_module加载了相关模块。奇怪的是,我仍然在错误日志中看到Invalid command 'FallbackResource', perhaps misspelled or defined by a module not included in the server configuration

文件系统尽可能简单。只有“Hello,World”index.php.htaccess。是的,权限很好。

/srv/www
    foo
        index.php <- 775, owned by apache
        .htaccess <- 664, owned by apache

我在.htaccess中尝试了以下各项:

  • FallbackResource index.php
  • FallbackResource /index.php
  • FallbackResource foo/index.php
  • FallbackResource /foo/index.php

同样尝试了<Directory /srv/www/foo>,即使这无论如何都没有用。

尝试了以下评论的新内容

    输入AllowOverride Indexes容器后,
  • AllowOverride not allowed here会引发<VirtualHost>
  • 已确认LoadModule dir_module modules/mod_dir.so位于httpd.conf

我遗失的任何愚蠢/明显的东西?

2 个答案:

答案 0 :(得分:7)

在描述here之前,直到2.2.16才引入FallbackResource指令。升级Apache应该可以解决您的问题。

答案 1 :(得分:1)

要在htaccess文件中使用FallbackResource,您需要允许Indexes覆盖。请参阅mod_dir documentation。尝试在vhost配置中添加覆盖:

AllowOverride Indexes

您还应该尝试查看apache的错误日志,以查看导致500服务器错误的原因。