简单谈谈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往windows中添加用户
Dec 06 PHP
关于页面优化和伪静态
Oct 11 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
yii插入数据库防并发的简单代码
May 27 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
Yii 框架入口脚本示例分析
May 19 PHP
实例化php类时传参的方法分析
Jun 05 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网上商城购物车设计代码分享
2012/02/15 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
Python中单、双下划线的区别总结
2017/12/01 Python
python+django加载静态网页模板解析
2017/12/12 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
销售会计工作职责
2013/12/02 职场文书
灵魂歌王观后感
2015/06/17 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫