图标存在于服务器但无法显示、请求返回404的技术求助
为什么图标无法显示?
可能的原因及解决方法
1. Rewrite规则正则存在拼写错误
你的规则中针对apple-touch-icon的部分写的是-precompressed.png,但常见的标准命名是-precomposed.png。如果你的图标文件名是apple-touch-icon-precomposed.png,这个正则就无法匹配,请求会被后续规则转发到index.php,最终返回404。
修改正则中的这部分,把-precompressed.png改成-precomposed.png:
RewriteRule ^(favicon.ico|browserconfig.xml|site.webmanifest|safari-pinned-tab.svg|(android-chrome|favicon|mstile)-[0-9]+x[0-9]+.png|apple-touch-icon(-precomposed.png|-[0-9]+x[0-9]+.png|.png))$ /icons/$1 [L]
2. 重写后的文件路径不正确
确认你的图标文件确实存放在服务器根目录下的/icons/文件夹中。如果你的网站部署在子目录(比如/my-site/),绝对路径/icons/$1会指向服务器根目录的icons文件夹,而非网站子目录下的icons,这时候需要把路径改成相对路径:
RewriteRule ^(favicon.ico|browserconfig.xml|site.webmanifest|safari-pinned-tab.svg|(android-chrome|favicon|mstile)-[0-9]+x[0-9]+.png|apple-touch-icon(-precomposed.png|-[0-9]+x[0-9]+.png|.png))$ icons/$1 [L]
3. 服务器未启用.htaccess或Rewrite模块
- 检查Apache服务器是否开启了
mod_rewrite模块,可通过执行a2enmod rewrite命令启用。 - 确保网站根目录的配置中设置了
AllowOverride All,允许.htaccess文件生效。
4. 图标文件权限问题
确认图标文件及icons文件夹的权限设置正确,服务器进程(如www-data)需拥有读取权限。一般建议文件权限设为644,文件夹权限设为755。
内容的提问来源于stack exchange,提问作者Andrii
相关产品推荐
相关产品推荐

