Apache2上的后备资源(2.2.22(Ubuntu))



我正试图清理我的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,就不需要回退了。你可以称之为变通方法。

相关内容

  • 没有找到相关文章

最新更新