简单谈谈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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
PHP学习之整理字符串
Apr 17 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
PHP邮箱验证示例教程
Jun 01 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 PHP
详细分析PHP7与PHP5区别
Jun 26 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生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
为原生js Array增加each方法
2012/04/07 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
Python遍历numpy数组的实例
2018/04/04 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
django框架中间件原理与用法详解
2019/12/10 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
Python常用数据分析模块原理解析
2020/07/20 Python
python实现ping命令小程序
2020/12/28 Python
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
鲜果饮品店创业计划书
2014/01/21 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
监察建议书
2015/02/04 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
如何正确理解python装饰器
2021/06/15 Python