无法在 Jekyll 和 Github Pages 中设置网站图标 (favicon)

66

我正尝试为我的GitHub页面设置一个favicon.ico,但它没有生效。当我在本地提供服务时,我看到标准的“空”favicon,当我将其推送时,我看到Facebook图标。为什么会这样?我在项目的根目录中有正确的favicon.ico,并添加了该行。

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

前往相关的default.html页面。您可以在此处查看源代码:https://github.com/drorata/drorata.github.io

10个回答

112

我从GitHub上克隆了你的项目来查看。使用Jekyll服务后,如你所述,网站没有显示图标。

我进行了一些快速测试,将favicon文件转换为.png而不是.ico文件,并更改favicon声明如下,这样就能够显示出favicon。

<link rel="shortcut icon" type="image/png" href="/favicon.png">

我尝试在保持 .ico 文件格式的情况下让网站图标正常显示,但一开始无法实现。然而,我进行了快速搜索,并找到了这个问题:Firefox 不显示网站图标

在那个问题中,提问者遇到了类似的网站图标未正常显示的问题,并最终通过在网站图标声明中在链接末尾添加一个 ? 来快速解决。我也尝试这样做,它奏效了。这是网站图标声明的内容:

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

两种方法中的任一种似乎都能解决你的问题。个人建议使用第一种方法,即将图像转换为 .png 文件,因为它看起来更简单、不太繁琐。

然而,如果你想保留文件作为一个 .ico 文件,那么在尝试第二种方法之前,请先阅读我链接到的问题,因为该问题的被接受答案与该解决方案不同。此外,我不确定第二种方法为什么有效,看起来有点繁琐。


2
同时 <link rel="shortcut icon" type="image/png" href="/favicon.png?"> 对我也有效。 - linuscl

18

我认为,目前正确的做法是:

<link rel="shortcut icon" type="image/png" href="{{ "/favicon.png" | prepend: site.baseurl }}" >
假设您使用的是png格式。将以下代码中的.png替换为.ico,可在我的情况下起作用:

假设您使用的是png格式。将以下代码中的.png替换为.ico,可在我的情况下起作用:

<link rel="shortcut icon" type="image/x-icon" href="{{ "/favicon.ico" | prepend: site.baseurl }}" >

我在Linux上使用Chrome。 Excalibur Zero和Ribtoks的回答都对我没用。


7

快速解决方案

去掉斜杠以使href地址相对。

例如:

更改为

<link rel="shortcut icon" type="image/png" href="/favicon.png">

to:

<link rel="shortcut icon" type="image/png" href="favicon.png">

在我的 github pages 网站 中这个操作完美地运行。

解释

以我网站的例子 https://hustlion.github.io/spanish-cards/ 为例:

当你使用 <link rel="shortcut icon" type="image/png" href="/favicon.png"> 时,图标地址将是 https://hustlion.github.io/favicon.png,因为根据斜杠 /favicon.png 指定的路径是 https://hustlion.github.io/

然而,当你使用 <link rel="shortcut icon" type="image/png" href="favicon.png"> 时,这相对于路径 https://hustlion.github.io/spanish-cards/,因此图标地址将正确地解析为 https://hustlion.github.io/spanish-cards/favicon.png

注意事项

这种路径问题特别发生在你正在为你的特定存储库使用 GitHub Pages 的情况下。


我不确定为什么这个被踩了,但这是最好的解释。或者你可以在斜杠前面加上点,像这样:href="./favicon.png" - Sia

4

I use

<link rel="shortcut icon" type="image/x-icon" href="{{ site.baseurl }}/images/favicon.ico" >

我在文件夹 images 中有网站图标。

4
根据文档:
1)将favicon.ico文件放入Jekyll项目的assets/images文件夹中,路径为assets/images/favicon.ico
2)如果不存在,则创建_includes/head_custom.html文件。
3)添加所需的覆盖内容:
<link rel="shortcut icon" type="image/x-icon" href="{{ site.baseurl }}/assets/images/favicon.ico">

完成。


3

对我来说以上方法都不起作用,但是此视频中的步骤(假设您使用的是minima主题)有效。

1)将_includes目录添加到您的项目根目录中

  • 终端:通过键入bundle show minima找到_includes/head.html
  • 从Finder中将_includes/head.html复制到您的项目根目录中

2)修改_includes/head.html以包含favicon链接

  • 以下是适用于我的代码:<link rel="shortcut icon" type="image/png" href="/favicon.png">
  • 重要提示:在/favicon.png前面加上/很重要。如果没有/,您的网站根目录将具有您的favicon,但其他端点不会有。

3)将jekyll-seo-tag插件添加到您的_config.yml文件中。应该是这样的:

# Build settings
markdown: kramdown
theme: minima
plugins:
  - jekyll-feed
  - jekyll-seo-tag

2

我使用以下方法使其正常工作:

<!-- Add favicon -->
<link rel="shortcut icon" 
      type="image/png" 
      href="{{ '/favicon.png' | relative_url }}" >

代码片段注意事项:

  1. 使用PNG格式作为网站图标,
  2. 在HTML的头部标签中使用相对路径(在minimia主题中是head.html)。
  3. 添加relative_url指令告诉Liquid将给定路径前置于urlbaseurl之后。

1
对我来说它可以使用.ico.png格式,但只在Firefox上有效。 - Piotr Miller

1

以防有人需要这个信息。对我来说,两种方法都不起作用。但是当我附加了 site.url 时,它就起作用了。

<link rel="shortcut icon" type="image/png" href="{{site.url}}/favicon.png">

也许这是因为您的站点字段包含了一个基础URL?通常情况下,您会有一个站点和一个基础URL。www.example-site.com/example-base/ <- 您的site.url可能看起来像这样 - visc

0
在我的情况下,我必须将 favicon.ico 文件添加到资产文件夹中,并按如下方式引用它:
<link rel="shortcut icon" type="image/x-icon" href="assets/favicon.ico">

0

我无法显示图片,而我在我的帖子中使用了Markdown语法,这里附上我所使用的方法,以便其他人受益。

![图片描述]({{ site.baseurl }}/assets/images/image.png)

这种方法在本地和Github页面上都适用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接