我正试图清理我的apache vhosts,因为我已经准备好了许多"Alias",把它们都放在mod_rewrite中可能会很烦人。然而,虽然我可以访问特定的URL(例如http://example.dev/robots.txt,http://example.dev/就其本身而言,vhost将不会回退到所列出的URL(FallbackResource /index.php
)。
vhost是Zend Framework项目的容器,并且没有设置.htaccess文件。
访问日志显示.... "GET / HTTP/1.1" 302 0
,但Google Chrome显示"未收到数据"one_answers"错误324(网络::ERR_EMPTY_REPONSE):服务器关闭了连接,但未发送任何数据。"
注释掉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>
我有一个解决方案。正如我在对最初问题的评论中所说,我也有同样的问题。我的vhost非常简单:
<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并且浏览器缓存了该url时,才会出现空响应。出于某种原因,在这种情况下,FallbackResource
似乎失败了,所以我认为,通过确保通过指定DirectoryIndex
来提供index.html,就不需要回退了。你可以称之为变通方法。