【问题标题】:FallbackResource on Apache2 (2.2.22 (Ubuntu))Apache2 上的 FallbackResource (2.2.22 (Ubuntu))
【发布时间】:2012-07-17 16:09:13
【问题描述】:

我正在尝试清理我的 apache 虚拟主机,因为我有许多“别名”,并且将它们全部放入 mod_rewrite 可能会很烦人。但是,虽然我可以自己访问特定的 URL(例如 http://example.dev/robots.txthttp://example.dev/,但虚拟主机不会回退到列出的 URL (FallbackResource /index.php)。

vhost 是 Zend Framework 项目的容器,没有设置 .htaccess 文件。

访问日志显示.... "GET / HTTP/1.1" 302 0,但谷歌浏览器显示“未收到数据”和“错误 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>

【问题讨论】:

  • Apache 错误日志中的任何内容?
  • 您的虚拟主机中是否有任何指令可能会阻止 FallbackResource 工作?请发布您的虚拟主机配置的较大部分。
  • 你解决过这个问题吗?我也遇到了同样的问题。
  • 我也遇到了同样的问题。我的虚拟主机非常简单pasted here,而我的 htaccess 只包含FallbackResource index.html。也许你解决了这个@Marlun?

标签: apache2 apache2-module


【解决方案1】:

我有一个解决方案。正如我在对原始问题的评论中所说,我也遇到了同样的问题。我的虚拟主机非常简单:

<VirtualHost *:8029>
    DocumentRoot "C:\path\to\wwwroot"
    ServerName localhost
        <Directory />
                AllowOverride All
        </Directory>
</VirtualHost>

而我的 htaccess 只包含:

FallbackResource index.html

我已将DirectoryIndex 添加到我的 .htaccess 文件中。现在是这样的:

FallbackResource /index.html
DirectoryIndex index.html

这已经解决了问题。

为什么会这样?

只有在第二次调用/ url 并被浏览器缓存时才会出现空响应。出于某种原因,FallbackResource 在这种情况下似乎失败了,所以我认为通过指定DirectoryIndex 来确保提供 index.html,就不需要回退了。您可以将其称为解决方法。

【讨论】:

  • 这个答案在很多方面都不好:首先你在&lt;Directory /&gt;中设置AllowOverride All——这意味着你不仅在任何地方都允许用户定义的配置,你也在指导httpd 到处检查它。这具有巨大的性能和安全隐患。然后,尽管可以完全访问配置,但您正在使用将部分配置放入 .htaccess:我想重申,这仅对执行 用户 有用没有(并且不应该)访问服务器或其配置。
  • 你是@IgorGalić :) 我应该注意到这只是一个开发解决方案,因为我的.htaccess 在VCS 下很方便,而我的系统范围httpd-vhosts.conf 不是。我将在实际部署时将我的配置放入httpd-vhosts.conf。感谢您的评论。
猜你喜欢
  • 1970-01-01
  • 2016-07-30
  • 2014-06-24
  • 1970-01-01
  • 2012-05-28
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多