简单谈谈favicon


Posted in PHP onJune 10, 2015

favicon.ico介绍

favicon.ico是个什么东西呢,也许见得太多都习以为常了(我就是这样,直到写这篇文章之前才知道),看看维基百科的解释:

Favicon是favorites icon的缩写,亦被称为website icon(网页图标)、page icon(页面图标)或urlicon(URL图标),下面是链接 http://zh.wikipedia.org/wiki/Favicon

其实说白了就是这个东西,大部分网站都会在打开的浏览器tab最左侧显示这个小图标,这个就是favicon.ico

简单谈谈favicon

这个图标怎么设置的呢,有多少同学跟我一样对这个小细节习以为常了,但是不清楚怎么设置举个手(这里检讨下自己,有好多细节东西把脸都能碰肿,但我却不真正的了解他,更可怕的是我的潜意识里认为我了解他......)。

favicon设置

这个怎么设置呢,设置方法很简单,有两种法子:

默认放置在服务器根目录下面

就是将文件命名为favicon.ico并放在网站根目录下就可以,浏览器会自动方请求去获取http://host/favicon.ico,这个请求在浏览器中通过F12是看不到的,需要借助其他工具(比如说Fiddler)去看,或者打开服务器访问日志,比如我这个,nginx日志中会显示网页图标请求
"13/May/2015:16:07:31 +0800" "192.168.X.X" "test.test.com" "200" "GET /favicon.ico HTTP/1.1" "4409" ......

通过link标签修正网页图标位置和名称

这种方法就是通过html的link标签设置网页图表的位置和名称,就像下面这样
<link href="favicon_baoman.ico" type="image/x-icon" rel="icon">

简单谈谈favicon

注意点

浏览器会缓存图标的信息,firefox我试了下是每隔一段时间(2分钟左右)就会请求一次favicon,chrome要删除数据才可以重新请求~~

这个有什么影响呢

发现这个问题是因为PHP框架,PHP框架通过pathinfo去解析路由,路由方式为【mod/controller.method】,如果不匹配的话就记录日志并返回404,我访问一个正确的路径也会报错说是路由不存在,但是接口返回是ok的,访问一个错误的路由会记录两条错误日志,这个是怎么回事呢,下面是我的nginx配置

server {
   listen  80;
   server_name test.test.com;

   location / {
     root /export/adsz/boss/php/sphp;
     fastcgi_pass  127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param PATH_INFO $fastcgi_path_info;
     include fastcgi_params;
     rewrite ^/(.*)$  /index.php/$1 break;
   }
 }

nginx配置导致了这个问题的存在,浏览器请求一个接口的时候,会默认带上http://test.test.com/favicon.ico,这个时候报出路由错误就想的通了,浏览器发出两条请求,一条使我们想要的,另一条就是这个ico网页图标请求,这个问题解决方法也很简单,只需要在配置中添加这个图表或者将favicon请求定位到其他地方:

server {
   listen  80;
   server_name test.test.com;
  location = /favicon.ico {
    root /wwroot/public/images/;
  }
   location / {
     root /wwroot/;
     fastcgi_pass  127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param PATH_INFO $fastcgi_path_info;
     include fastcgi_params;
     rewrite ^/(.*)$  /index.php/$1 break;
   }
 }

总结

找到这个原因并修改后,我又仔细看了看nginx配置,发现其他虚拟主机都有配置这个favicon.ico的匹配规则!?濉!!#?芙嵯拢?褪且?嗫纯矗?嘞胂胛?裁矗?灰?院芏喽?魇?バ巳ぁ⒓?植还?/p>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
PHP中的integer类型使用分析
Jul 27 PHP
PHP下escape解码函数的实现方法
Aug 08 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
PHP使用imagick扩展实现合并图像的方法
Apr 25 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
Aug 30 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
Yii 框架入口脚本示例分析
May 19 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 #PHP
PHP中生成UUID自定义函数分享
Jun 10 #PHP
php使用for语句输出三角形的方法
Jun 09 #PHP
php生成图片验证码
Jun 09 #PHP
php判断用户是否手机访问代码
Jun 08 #PHP
浅谈PHP中Stream(流)
Jun 08 #PHP
php实现有趣的人品测试程序实例
Jun 08 #PHP
You might like
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
php文件上传简单实现方法
2015/01/24 PHP
PHP闭包函数详解
2016/02/13 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
python模拟表单提交登录图书馆
2018/04/27 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
pycham查看程序执行的时间方法
2018/11/29 Python
python实现飞机大战小游戏
2019/11/08 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
小学后勤管理制度
2014/01/14 职场文书
运动会广播稿20字
2014/02/18 职场文书
工程竣工验收申请报告
2015/05/15 职场文书