如何修复favicon.ico文件提示Cache-Control头缺失或为空的问题
问题原因
Header指令未加always参数:Apache 默认Header set仅对2xx、3xx类成功响应生效,若favicon.ico请求返回404等异常状态码时,你写的缓存头规则不会触发,就会出现缺失报错- 全局头操作的优先级问题:你前面全局取消了Expires、Pragma头,未加
always的文件级Header规则优先级更低,容易被全局规则覆盖 Cache-Control的值缺少引号包裹,部分Apache版本会解析错误
修复后的.htaccess配置
<IfModule mod_headers.c> Header always set X-Content-Type-Options nosniff Header unset Expires Header unset Pragma Header unset X-Powered-By <FilesMatch "\.(php)$"> Header always set Cache-Control "no-cache" </FilesMatch> <Files "favicon.ico"> Header always set Cache-Control "max-age=31536000, public" </Files> </IfModule>
生效验证
- 保存配置后无需重启Apache(虚拟主机环境直接生效,独立服务器可重载Apache配置避免重启)
- 清空浏览器缓存后重新访问页面,在开发者工具「网络」面板查看favicon.ico的响应头,确认
Cache-Control字段已正常返回 - 如果仍有报错,先确认服务器已启用
mod_headers模块,大部分环境默认开启,不确定可联系服务商确认
内容的提问来源于stack exchange,提问作者Marcello Impastato
相关产品推荐
相关产品推荐

