我将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
可用。
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
我遗失的任何愚蠢/明显的东西?
答案 0 :(得分:7)
在描述here之前,直到2.2.16才引入FallbackResource指令。升级Apache应该可以解决您的问题。
答案 1 :(得分:1)
要在htaccess文件中使用FallbackResource
,您需要允许Indexes
覆盖。请参阅mod_dir documentation。尝试在vhost配置中添加覆盖:
AllowOverride Indexes
您还应该尝试查看apache的错误日志,以查看导致500服务器错误的原因。