简单谈谈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做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
discuz安全提问算法
Jun 06 PHP
php实现微信公众号无限群发
Oct 11 PHP
php数组冒泡排序算法实例
May 06 PHP
ThinkPHP发送邮件示例代码
Oct 08 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 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
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
浅谈django channels 路由误导
2020/05/28 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
师范应届生教师求职信
2013/11/05 职场文书
森林防火标语
2014/06/23 职场文书
上课说话检讨书500字
2014/11/01 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang