IE11下Favicon问题:为何URL可用而相对路径不可用?
嘿,我之前也跟IE11的favicon较劲过,结合你的情况——第三方绝对URL能正常显示但本地相对路径不行,给你几个针对性的排查和解决思路:
改用根相对路径而非当前目录相对路径
IE11对相对路径的解析逻辑有时候和Chrome/Firefox不一致,尤其是当你的页面不在网站根目录时。把./assets/favicon.ico改成/assets/favicon.ico(开头的/表示网站根目录),这样不管页面在哪个子目录,都会指向根目录下的assets文件夹,避免路径解析错误。严格检查favicon.ico的格式和尺寸
IE11对ICO文件的要求特别“死板”:必须是标准的ICO格式(不能是把PNG改后缀的文件),建议包含16x16、32x32两种尺寸(这是IE11优先识别的尺寸),颜色深度用24位以下。可以用专门的ICO生成工具重新导出符合要求的文件,别直接改后缀凑数。强制清除IE11的缓存
IE11的缓存机制非常顽固,哪怕你已经替换了favicon文件,它可能还在加载旧缓存。你可以:- 打开IE11的Internet选项,在“浏览历史记录”里点击“删除”,勾选“临时Internet文件和网站文件”后删除;
- 或者给favicon的URL加个版本参数,比如
href="./assets/favicon.ico?v=20240520",强制浏览器重新请求新文件。
调整link标签的位置
IE11要求favicon的link标签放在<head>标签的最前面,最好在<title>标签之前,不要和CSS、JS的link标签混在一起。试试把<link rel="shortcut icon" href="./assets/favicon.ico" type="image/x-icon" />移到head的最顶部位置。检查服务器的MIME类型配置
如果服务器返回的.ico文件Content-Type不是image/x-icon,IE11可能会拒绝加载。你需要确认服务器对.ico文件的MIME类型设置:- Apache:在.htaccess文件中添加
AddType image/x-icon .ico; - Nginx:在站点配置的
types块中添加image/x-icon ico;; - 如果你用的是其他服务器,找到MIME类型设置项,给.ico绑定
image/x-icon类型。
- Apache:在.htaccess文件中添加
另外,建议你同时保留两个link标签(针对现代浏览器和IE),像这样:
<link rel="shortcut icon" href="/assets/favicon.ico" type="image/x-icon" /> <link rel="icon" type="image/x-icon" href="/assets/favicon_bnp.png" />
这样既能兼容IE11,也能让Chrome/Firefox正常加载PNG格式的favicon。
内容的提问来源于stack exchange,提问作者Andy K




