简单谈谈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中的串行化变量和序列化对象
Sep 05 PHP
1.PHP简介
Oct 09 PHP
最省空间的计数器
Oct 09 PHP
用PHP制作静态网站的模板框架(二)
Oct 09 PHP
PHP cron中的批处理
Sep 16 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
php实现字符串反转输出的方法
Mar 14 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
CI框架扩展系统核心类的方法分析
May 23 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 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
投票管理程序
2006/10/09 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
JS焦点图切换,上下翻转
2011/05/12 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
python实现socket端口重定向示例
2014/02/10 Python
Python 性能优化技巧总结
2016/11/01 Python
Python机器学习之决策树算法
2017/12/22 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
python用for循环求和的方法总结
2019/07/08 Python
Python中断多重循环的思路总结
2019/10/04 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
让IE支持HTML5的方法
2012/12/11 HTML / CSS
JAVA中的关键字有什么特点
2014/03/07 面试题
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
资深财务管理人员自我评价
2013/09/22 职场文书
安全协议书范本
2014/04/21 职场文书
教育见习报告范文
2014/11/03 职场文书
新入职员工工作总结
2015/10/15 职场文书
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL