Php Apache/Zend Framework-错误日志-找不到页面

Php Apache/Zend Framework-错误日志-找不到页面,php,apache,zend-framework,apache2,Php,Apache,Zend Framework,Apache2,这个让我有点困惑 我正在运行一个带有Zend框架的LAMP服务器。我花了很多时间查看错误日志,试图清除任何编程错误/bug 我的大多数特定站点错误都已完成,但我查看了我的常规Apache错误日志: /var/log/apache2/error.log 我发现“文件不存在”的错误很多,几乎是恒定的,如下所示(为简洁起见简化): 等等。这些文件夹不存在,因为假设所有请求都被重定向到index.php文件并由Zend Framework处理。实际控制人和行动存在,因此任何人都将: http://ww

这个让我有点困惑

我正在运行一个带有Zend框架的LAMP服务器。我花了很多时间查看错误日志,试图清除任何编程错误/bug

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

/var/log/apache2/error.log
我发现“文件不存在”的错误很多,几乎是恒定的,如下所示(为简洁起见简化):

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

http://www.example.com/explore

将通过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”对“default”站点来说很累

谢谢你的洞察力! 来自雷吉勒罗的浮华:


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

我能够比较access.log和error.log来调查我的问题

这是很久以前的事了,但我相信问题是由于一些脚本通过IP地址直接进入服务器,并试图使用虚拟托管域之一的目录结构。

来自Regilero:


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

我能够比较access.log和error.log来调查我的问题


这是一段时间以前的事了,但我相信问题是由于一些脚本通过IP地址直接进入服务器,并试图使用虚拟托管域之一的目录结构。

这可能是htaccess的问题。你有没有试着把这两个主要条件合并起来?我的意思是,所有的请求都被重定向到www版本,并且将重定向到index.php?这将进入默认日志的事实实际上是一个很好的问题提示,请查看相关的access.log。可能有些请求是在DNS名称上提出的,而您的virtualhost没有处理这些请求,或者是由不使用HTTP 1/1(因此没有主机头)的web客户端提出的。一个有趣的信息是,日志中也有引用链接,它们来自我的网站:www.example.com。正如regilero所建议的(为什么我没有考虑这样做,我不知道),我查看了相同IP/时间戳的访问日志。他们似乎没有访问任何异常的东西。它也似乎是在一天之内发生的(很多)。现在,我只需要关注它,看看它是否继续发生。根据奥雷里奥的建议,我的htaccess重定向可能有问题。从那以后我就再也没见过这种情况发生。也许我那天做了些奇怪的事。你有没有把它修好?这将对我有帮助:)这可能是htaccess的一个问题。你有没有试着把这两个主要条件合并起来?我的意思是,所有的请求都被重定向到www版本,并且将重定向到index.php?这将进入默认日志的事实实际上是一个很好的问题提示,请查看相关的access.log。可能有些请求是在DNS名称上提出的,而您的virtualhost没有处理这些请求,或者是由不使用HTTP 1/1(因此没有主机头)的web客户端提出的。一个有趣的信息是,日志中也有引用链接,它们来自我的网站:www.example.com。正如regilero所建议的(为什么我没有考虑这样做,我不知道),我查看了相同IP/时间戳的访问日志。他们似乎没有访问任何异常的东西。它也似乎是在一天之内发生的(很多)。现在,我只需要关注它,看看它是否继续发生。根据奥雷里奥的建议,我的htaccess重定向可能有问题。从那以后我就再也没见过这种情况发生。也许我那天做了些奇怪的事。你有没有把它修好?这将对我有帮助:)
http://www.example.com/where-to-buy/
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]