Apache 无法访问 /assets 目录(OS X 10.6 Snow Leaopard)

Apache 无法访问 /assets 目录(OS X 10.6 Snow Leaopard)

我知道这最终会成为一件非常愚蠢的事情,但我找不到它。在我升级到 OS X 10.6.2 (Snow Leopard) 和提供的 Apache 2.2.13 之前,一切都很顺利。我已经用我自己的 httpd conf 文件替换了所有以前运行良好的文件。除了一件事之外,一切都很好:Apache 对任何对 /assets/* 的请求都返回 404 错误。如果我将目录从“assets”重命名为其他任何名称,它都可以正常工作。我快要疯了,试图找出它为什么对字符串“assets”敏感。我没有 .htaccess 文件。所有权限都已检查。我搜索了所有 conf 文件(包括 vhosts)以查找可能导致此问题的原因,但尚未找到。有没有任何Apache 对待“资产”的方式不同于其他内容的原因是什么?除了 conf 和 .htaccess 文件之外,还有其他地方可以检查吗?

答案1

您是否在任何 conf 文件中有一个与此目录相关的指令的特定参数?您是否可以在所有 conf 文件中查找该短语以查看是否发生了什么?当您尝试浏览该目录时,您的错误日志会显示什么?

答案2

好吧,这很奇怪。VirtualHost DocumentRoot 设置为 /var/www/haystack,目标文件(例如)为 /var/www/haystack/asssets/test.html。但 /var/www/assets 处还有另一个 VirtualHost。我在 haystack 虚拟主机中设置了以下 RewriteRule:

RewriteRule /test /assets/test.html

上述规则失败 (404)。结果发现它不是在寻找 /var/www/haystack/assets/test.html,而是在尝试寻找 /var/www/assets/test.html,但这个文件并不存在。我通过重命名 /var/www/assets 确认了这一点,问题就解决了。同样奇怪的是,我有两台 Mac,都使用 Snow Leopard,并且都使用相同版本的 Apache 和相同的配置文件。只有其中一台出现了这个问题。我研究了 Apache 文档,但不明白为什么在一个 VirtualHoust 中定义的 RewriteRule 应该引用另一个 VirtualHoust 的 DocumentRoot。

相关内容