忽略MVC PHP中的favicon.ico请求

时间:2013-08-05 17:04:55

标签: php url-routing favicon

经过几个小时的努力并重新阅读我的整个代码后,我终于弄清楚我的用户活动表中记录的额外请求是什么。

基本上我的MVC结构记录用户发出的每个请求。因此,如果用户进入索引页面或进行ajax调用,所有内容都记录在我的表中,但问题是每个请求都记录了 2条记录,并且无法理解原因。

后来我添加了一些调试 var_dumps ,发现第二个日志实际上是文件请求: /favicon.ico

如何在路由器中忽略这一点,以便它不会记录此类文件请求并只加载文件。我确实需要favicon.ico并希望使用它但不希望它成为请求的一部分,并且不想在每个请求上记录它。

现在每个页面都会记录2行,1行是正确的,第2行是favicon.ico。

如果有人遇到同样的问题,请提供帮助。

修改

请注意,如果我在根文件夹中添加了一些favicon.ico,那么它只会发出1个请求。所以,如果我没有favicon.icon那么它会提出2个请求。是否可以检查favicon.ico是否不存在,不要提出额外请求。

这里要求的是我的FrontController中的日志代码:

if ($user->isLoggedIn()) {
   $m_useractivity = ModelFactory::Create(array('userActivity', $user->getUID()));
   $log_id = $m_useractivity->logActivity($user->getUID(), $_SERVER['REQUEST_URI'], $a, $p, $request->getParams(), $request->browser(), $request->browserVersion(), $request->platform(), '', $request->ip(), $request->referer(), $request->getRequestMethod(), $request->type());
}

1 个答案:

答案 0 :(得分:1)

只需检查REQUEST_URI for favicon.ico:

if ($user->isLoggedIn() && strpos($_SERVER['REQUEST_URI'],'favicon.ico') === false) {
   //your code
}

此外,您可以使用.htaccess来防止此类请求完全击中您的控制器。通常情况下,如果请求的文件不存在,它应该只打你的PHP代码。