我正在使用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'它不起作用。这太疯狂了。
答案 0 :(得分:1)
浏览器向您的网络服务器发送请求
GET /favicon.ico HTTP/1.1
以便检索Favicon。您可以使用维基百科文章中描述的链接标记更改favicon的位置。
在设置会话数据之前尝试移动file_exists
检查? Web应用程序需要能够处理丢失的资源并相应地返回404。
答案 1 :(得分:1)
老问题,但我想我有一个更好的答案...
假设您的favicon.ico位于根目录中,请确保您的CodeIgniter .htaccess文件将其包含在RewriteCond中,以便不会将其传递给CodeIgniter index.php:
RewriteCond $ 1!^(assets | images | robots.txt | favicon \ .ico )
在您的html文件中,包括指向您的favicon.ico的完整路径,例如,使用CodeIgniter的base_url()函数:
” />
通过包含图标的完整路径,它不会在$ params数组中通过“ favicon.ico”神秘地传递到控制器的_remap()函数。