【问题标题】:Apache / Zend Framework - Error Log - Page Not foundApache / Zend 框架 - 错误日志 - 找不到页面
【发布时间】:2011-10-19 17:18:06
【问题描述】:

这个让我有点困惑。

我正在使用 Zend Framework 运行 LAMP 服务器。我花了很多时间查看我的错误日志以尝试清理任何编程错误/错误。

我的大多数特定站点错误都已完成,但我查看了我的一般 Apache 错误日志:

/var/log/apache2/error.log

而且我看到很多“文件不存在”的错误,几乎是恒定的,如下所示(为简洁起见):

[date] [error] [client #:#:#:#] File does not exist: /var/www/sites/[website folder]/public/explore
[date] [error] [client #:#:#:#] File does not exist: /var/www/sites/[website folder]/public/where-to-buy
[date] [error] [client #:#:#:#] File does not exist: /var/www/sites/[website folder]/public/products

等等。这些文件夹不存在,因为假设所有请求都被重定向到 index.php 文件并由 Zend Framework 处理。实际的控制者和动作是存在的,因此任何人都可以:

http://www.example.com/explore

http://www.example.com/where-to-buy/

将通过 Zend Framework 获得正确的页面。

但我不明白为什么会出现所有这些错误?

如果认为这可能与将大多数请求(不包括样式表、文档、图像等)重定向到 index.php 脚本的 .htaccess 文件有关。这是我的样子:

RewriteEngine On
# make sure all requests go to 'www' sub-domain
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

# Zend Framework, redirect requests to index.php
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Apache 是否首先尝试通过实际目录解析请求,然后将请求传递给 index.php?导致错误请求的原因是什么?

我也不确定为什么这会被转储到默认错误日志中,而不是错误日志或特定站点中。换句话说,我有每个域的错误日志,例如“example.com_error.log”。这可能是该问题的另一个迹象。这可能是一个序列的事情,因为“error.log”对“默认”站点感到厌烦。

感谢您的任何见解! 模糊的

【问题讨论】:

  • 这可能是 htaccess 的问题。您是否尝试过合并这两个主要条件?我的意思是所有请求都被重定向到 www 版本和将重定向到 index.php 的那个?
  • 这将转到默认日志这一事实实际上是对问题的一个很好的提示,请检查相关的 access.log。也许在您的虚拟主机中未处理的 DNS 名称上发出的某些请求或由未使用 HTTP 1/1 的 Web 客户端(因此没有主机标头)
  • 一个有趣的信息是日志中还有推荐链接,它们来自我的网站:www.example.com。
  • 根据 regilero 的建议(为什么我没有考虑这样做,我不知道),我查看了相同 IP/时间戳的访问日志。他们似乎没有访问任何不寻常的东西。它似乎也发生在某一天(很多)。现在,我只需要密切关注它,看看它是否会继续发生。根据 Aurelio 的建议,我的 htaccess 重定向可能会发生一些事情。从那以后我再也没有看到这种情况发生。也许我在那一天做了一些奇怪的事情。
  • 你修好了吗?这对我会有帮助:)

标签: php apache zend-framework apache2


【解决方案1】:

来自Regilero:

这将进入默认日志的事实实际上是一个很好的提示 关于问题,查看相关的access.log。也许提出了一些要求 在您的虚拟主机或 Web 客户端未处理的 DNS 名称上 使用 HTTP 1/1(因此没有主机标头) – regilero 2011-10-19 22:52:52

我能够将 access.log 与 error.log 进行比较以调查我的问题。

这是不久前的事,但我认为问题是由于某些脚本通过 IP 地址直接进入服务器并尝试使用来自虚拟托管域之一的目录结构。

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2014-03-04
    • 2012-06-29
    • 1970-01-01
    相关资源
    最近更新 更多