Apache2上的FallbackResource(2.2.22(Ubuntu))
我试图清理我的apache虚拟主机,因为我已经有了一些'Alias',并且将它们全部放入mod_rewrite中会很烦人。 但是,尽管我可以访问特定的URL(例如http://example.dev/robots.txt,http://example.dev/),但vhost不会回FallbackResource /index.php
列出的URL( FallbackResource /index.php
)。
vhost是一个Zend Framework项目的容器,没有设置.htaccess文件。
访问日志显示.... "GET / HTTP/1.1" 302 0
,但Google Chrome显示'没有收到数据'和'错误324(net :: ERR_EMPTY_RESPONSE):服务器关闭了连接但没有发送任何数据。
注释掉FallbackResource
行,然后重新启用基于<Location />
的mod_rewrite,但是按预期工作。
编辑:没有什么可以阻止它工作的虚拟主机。 一些Alias
行(FallbackResource应该使用这些行)和一些FilesMatch
停止访问具有特定扩展名的文件。 日志中出现的唯一东西是404当它试图去URL而不是index.php(列出的资源)。
<VirtualHost *:80>
ServerAdmin webmaster@site.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/website/current/html/
SetEnv APPLICATION_ENV productionbackend
# must be most specific first
Alias /i/static /var/website/static/i
# more /i/* Alias
Alias /i /var/website/current/resources/common-furniture/
# protecting files in the directory.
<FilesMatch ".*.xml">
Order allow,deny
Deny from all
</FilesMatch>
<Directory "/var/website/current/html/">
Options FollowSymLinks All
AllowOverride All
</Directory>
ErrorLog logs/error.log
CustomLog logs/access.log common
</VirtualHost>
我有一个解决方案。 正如我在对原始问题的评论中所说的,我也遇到了同样的问题。 我的虚拟主机非常简单:
<VirtualHost *:8029>
DocumentRoot "C:pathtowwwroot"
ServerName localhost
<Directory />
AllowOverride All
</Directory>
</VirtualHost>
我的htaccess只包含:
FallbackResource index.html
我已将DirectoryIndex
添加到我的.htaccess文件中。 它现在写道:
FallbackResource /index.html
DirectoryIndex index.html
这已经解决了这个问题。
为什么这个工作?
空的响应只发生在/
url被第二次调用并被浏览器缓存的时候。 出于某种原因,看起来FallbackResource
在这种情况下失败了,所以我想通过确保index.html通过指定DirectoryIndex
来提供服务,不需要回退。 您可以将此称为解决方法。
上一篇: FallbackResource on Apache2 (2.2.22 (Ubuntu))
下一篇: What is the point of a .cpp file containing only a single #include?