关于favicon.ico的报错:RoutingError

本文详细解析了在Rails生产环境中遇到的favicon.ico请求无法路由匹配的问题,原因在于默认Rails server未配置为静态资源服务,且缺少对应的favicon文件。文章提供了通过nginx配置静态资源服务的解决方案,并介绍了如何为个人博客添加专属favicon.ico图标的方法,包括在线制作工具推荐和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误:

ActionController::RoutingError (No route matches [GET] "/favicon.ico"):

ActionController::RoutingError (No route matches [GET] "/favicon.ico"):
  actionpack (3.2.8) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.8) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.8) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.8) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.8) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'

原因:

  #1 生产环境下默认rails的server不作为静态资源服务

  #2 没有favicon文件

 

解决:

  最好用nginx来统一处理静态资源,如下:

        location ~* \.(ico)$  {
          root /projects/myproject/current/public;
          gzip_static on; # to serve pre-gzipped version
          add_header ETag "";
          expires max;
          add_header Cache-Control public;
        }

 

 参考:

ActionController::RoutingError (No route matches [GET] “/favicon.ico”) in Rails

http://ruby-china.org/topics/1229

 

附录:

 

如何给自己的独立博客添加一个favicon.ico

什么是favicon.ico?它是指用于作为缩略图的网站标志,主要显示位于浏览器的地址栏或者在标签上,用于显示网站的专属性, 目前像IE、360、搜狗等主流的浏览器都支持favicon.ico图标。 比如我的博客的红旗就是一个favicon.ico。

   很多大型的网站都有favicon.ico,但是我发现还有很多的个人网站都没有favicon.ico,或者直接套用着他人的,这样对于一个正规的网站是不利的。在此建议:为您的独立博客加一个专属的favicon.ico,让你的网站有属于您自己的专属标识,是一件必须要做的事情,这也是成为名博的基础。

favicon.ico网图标是.ico后缀的16X16或32*32像素的小图标,通常使用16*16的。其实这个现在有专门的软件可以制作,但是大名鼎鼎的Photoshop并不支持ico文件编辑。那么可以不可以不依靠软件制作了,当然可以,现在制作并没有必要使用专用软件,有很多的网站提供在线制作工具,比较快捷。

    下面吴晓阳介绍几个网站:

第一个,这个也是我常用的,http://www.makeico.com   生成的ICO支持透明。只要你原来有gif或者png格式有透明度,做图网生成的 ICO 会保持 透明度不变。这点比较重要,透明,你懂得!这个网站的原始图像可以接受:gif,jpg,png,bmp,ico,wmf 图像格式,原始图像文件大小限制一定要小于500k。建议制作一张400x400的png图像,然后等比缩小到你想转换的ico尺寸,最后用该网站提供的工具给它转换成ico图标格式. (当然你也可以直接把原始尺寸的图像直接上传,做图网会自动将图片缩小到合适的ico图标尺寸)。 

第二个,http://www.bitbug.net/  ico图标比特虫在线制作,这个不多说了,总体一般。

第三个:http://www.ico.la,成功生成favicon.ico图像后,请保存生成的 ico 文件,文件名称必须为:favicon.ico 。

生成的图像放在网站的根目录下,如果您的网站有原始ico文件,直接替换即可!

也可以加以下代码到网页的头部的<head>与</head>之间。

<link rel="icon" href="favicon.ico" type="image/x-icon" />

<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> 

好了,赶紧为你的博客做一个,记得要特别点,专属!

 

=

=

+

-

=

=

 

 

 

### 解决网站 favicon.ico 文件导致的错误 #### 了解 favicon.ico 的作用及其重要性 Favicon.ico 是一个小图标文件,通常用于表示网页或网站的身份,在浏览器标签页、书签栏等地可见。大多数现代浏览器在加载页面时会尝试获取该文件,默认情况下会在站点根目录寻找 `favicon.ico` 文件[^2]。 #### 浏览器行为分析 当浏览器未能成功加载 favicon.ico 文件时,可能会重复发起请求甚至重新加载整个页面,这不仅影响用户体验还可能增加服务器负担。对于 IE11 这样的特定版本浏览器来说,这种现象尤为明显,可能导致首页被加载多次的问题[^1]。 #### 防止 favicon.ico 请求的方法 为了减少不必要的资源消耗以及避免因找不到 favicon 而产生的 HTTP 错误码(如404),可以采取措施阻止默认的 favicon 请求: - **通过 HTML `<head>` 中定义自定义路径** 如果不想放置实际的 `.ico` 文件于根目录,则可以在HTML文档头部加入如下代码来指定另一个位置: ```html <link rel="icon" href="/path/to/your/custom-favicon.png"> ``` - **利用 Web 服务器配置** 对于 Apache 或 Nginx 等 web server 可以调整设置以处理 favicon 请求。例如,在 .htaccess (适用于Apache) 添加以下规则可返回空白响应而不触发真实文件查找: ```apacheconf RewriteEngine On RewriteRule ^favicon\.ico$ - [L,R=404] ``` 类似地,在 nginx.conf 中添加 location block 来立即结束 favicon 请求链路: ```nginx location = /favicon.ico { log_not_found off; access_log off; } ``` #### 正确部署 favicon.ico 文件 考虑到兼容性和简便性,最推荐的做法还是按照惯例将 favicon.ico 放置在网站根目录下,并确保其存在且有效。这样做能够满足大部分主流浏览器的需求而无需额外编码工作[^3]。 #### 处理现有错误日志中的 favicon 报告 如果已经出现了大量关于 favicon.ico 的 404 记录,可以通过优化上述方法之一快速解决问题;同时考虑清理旧的日志条目或将这些无害警告过滤掉以免干扰真正重要的调试信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值