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来提供服务,不需要回退。 您可以将此称为解决方法。

链接地址: http://www.djcxy.com/p/11019.html

上一篇: FallbackResource on Apache2 (2.2.22 (Ubuntu))

下一篇: What is the point of a .cpp file containing only a single #include?