Codeigniter - 奇怪的参数'favicon.ico'

时间:2013-11-30 12:35:45

标签: php codeigniter

我正在使用Codeigniter PHP框架。 我有典型的Pages控制器来显示页面。我还添加了用于存储在会话变量中的代码,在该变量中,页面在登录之前是用户。我得到的参数'favicon.ico'没有任何意义,因为被调用的页面是'登录'并且之后显示良好。

首先作为临时解决方案,我检查了'favicon.ico'的$ page变量,奇怪的是在检查之后我在$ page变量'login'里面。这非常奇怪,我必须对登录页面进行第二次检查,因为你看到这里是为了让它工作。 :

    public function view($page = 'index')
{
    if($page != 'favicon.ico'){
        if($page != "login"){
            $this->session->set_userdata('actual_page', $page);
        }               
    }

    if ( ! file_exists('application/views/pages/'.$page.'.php'))
    {
        // Whoops, we don't have a page for that!
        $page="error";
    }
    // guardamos la página actual en la sesión


    $data['title'] = ucfirst($page); // Capitalize the first letter

    $this->load->view('templates/header', $data);
    $this->load->view('pages/'.$page, $data);       
    $this->load->view('templates/footer', $data);

}

我的问题是,发生了什么?为什么我只检查$ page =='login'它不起作用。这太疯狂了。

2 个答案:

答案 0 :(得分:1)

浏览器向您的网络服务器发送请求

GET /favicon.ico HTTP/1.1

以便检索Favicon。您可以使用维基百科文章中描述的链接标记更改favicon的位置。

在设置会话数据之前尝试移动file_exists检查? Web应用程序需要能够处理丢失的资源并相应地返回404。

答案 1 :(得分:1)

老问题,但我想我有一个更好的答案...

  1. 假设您的favicon.ico位于根目录中,请确保您的CodeIgniter .htaccess文件将其包含在RewriteCond中,以便不会将其传递给CodeIgniter index.php:

    RewriteCond $ 1!^(assets | images | robots.txt | favicon \ .ico

  2. 在您的html文件中,包括指向您的favicon.ico的完整路径,例如,使用CodeIgniter的base_url()函数:

    ” />

通过包含图标的完整路径,它不会在$ params数组中通过“ favicon.ico”神秘地传递到控制器的_remap()函数。