所谓的 SEO 也就是搜索引擎优化,指遵循搜索引擎的搜索原理,对网站结构、网页文字语言和站点间互动外交略等进行合理规划部署,以改善网站在搜索引擎的搜索表现,进而增加客户发现并访问网站的可能性。
这里针对通过 Jekyll 搭建的 Blog 查看如何进行优化。
搜索引擎会通过 Robots 尽量扫描所有的网站,然后将数据保存下来,当用户搜索的时候会从保存的数据中查询相关的记录,同时根据一些参数对结果进行排名。
SEO 的全称是 Search Engine Optimization 也就是根据搜索引擎的排名策略,对网站进行优化,大部分的优化 Tag 都需要添加到网站的 <head>
字段内。
如上,那么 SEO 的关键是,如何被各个搜索网站有效抓取,同时提高搜索排名。以 Google 为例,可以使用 site: yourdomain.com
查看是否被 Google 抓取;不过其排名的参数有两百多个,很难全部覆盖,如下介绍常见的优化技巧。
搜索结果中会显示对应标题和描述内容,如果没有指定,一般会自动选择第一段内容 (当然不一定严格准确)。所以,标题尽量简单吸引人,而描述可以简要介绍这篇文章的概要内容、要解决的问题等。
建议在 _config.yml
中添加 title
配置项,这样就可以通过 site.title
直接引用,同时方便修改;而在文章的头部,通过 title
指定文章相关标题,那么就可以设置如下内容。
<title>
{%if page.title %}
{{ page.title }}
{% else %}
{{ site.title }}
{% endif %}
</title>
在头部中,尽量包含与文章相关的关键词,这样更容易被选中。
与上面类似,在 _config.yml
中添加主页相关的描述信息,在每篇文章的头部添加与文章相关的描述信息。长度尽量小于 160 字节,否则可能会被识别为垃圾信息或者关键字。
<meta itemprop="description" name="description" content="{% if page.description %}{{ page.description | truncate: 160 }}{% else %}{{ site.description | truncate: 160 }}{% endif %}" />
描述只会用来在搜索结果中展示,并不会参与排名,但是仍然建议在开始几句话中包含相关的关键字,这样可以方便用户查阅,从而增加用户的点击率。
另外 <meta name="keywords" content="XXX" />
对于 Google 来说已经取消了参考该因子作为排名,主要是因为用户可以任意修改,可能会污染排名结果,详见 Google does not use the keywords meta tag in web ranking 中的介绍。
尽量在 URL 中包含与主题相关的信息,一些搜索引擎可以判断 URL 是否与主题相关,这样可以有更好的搜索排名,所以,不建议使用文章 ID 作为 URL 的内容,而且希望其长度尽量简短。
在 Jekyll 中,默认路径会使用到日期,例如 https://yourname.github.io/2010/08/15/your-post-name.html
,其实,除非文章真正与时间相关 (例如游记、周更漫画等) 不建议添加日期。
也就是 “Permanent link” 的缩写,意为 “永久链接”,即浏览器访问站点资源的完整路径地址。
可以在 _config.yml
中修改 Permalink 配置,默认是 /:categories/:year/:month/:day/:title:output_ext
,可以修改为 permalink: /:title/
或者 permalink: /:title.html
即可。
所谓的停用词 (Stop-Words) 常见的有 and
or
but
of
the
a
etc
,这些会增加 URL 的长度,而且没有太多实际含义。例如 optimize-jekyll-blog-seo.md
和 how-to-optimize-jekyll-blog-for-seo.md
基本可以表达相同的意思,而前者更加简练。
另外,不太建议使用中文路径,因为复制之后链接地址会被转义,很难看出具体是什么样的链接。
所以,URL 应该尽量简短,而且要包含与文章主题相关的关键字。
一般是 xml 格式,通过 sitemap.xml
用于告知搜索引擎,在该网站上有哪些可供抓取的网页,以便搜索引擎可以更加智能地抓取网站。
最简单的就是 xml 文件,在其中列出网站中的网址以及关于每个网址的其他元数据,包括了上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度等信息。
可以通过 jekyll-sitemap
插件自动生成,也可以手动添加,该文件设置的内容直接参考如下,可以查看 本站 sitemap.xml 。
---
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for post in site.posts %}
<url>
<loc>{{ site.url }}{{ post.url | remove: 'index.html' }}</loc>
</url>
{% endfor %}
</urlset>
生成之后,搜索机器人会定期查找,当然也可以通过 Google Search Console、百度搜索资源平台 提交。
互联网上的大部分内容都会被搜索引擎爬虫抓取,而搜索引擎会依据站点根目录下 robots.txt
文件所定义的规则去抓取当前站点的内容。
有一部分内容不想被抓取,这样可以通过该文件进行配置,示例如下。
User-agent: * # 指定Agent
Disallow: /assets/ # 禁止目录,需要以/结尾,常规资源目录
Disallow: /norobots/ # 杂七杂八敏感文件
Disallow: /targer_file.extension # 禁止文件
可以添加如下内容,这样会通过 Jekyll 自动渲染。
---
layout: null
permalink: robots.txt
---
User-agent: *
Disallow: /assts/
Disallow: /norobots/
Sitemap: {{ site.url }}/sitemap.xml
注意,例如上述的 /norobots/
目录不想被爬虫访问,同时也不想被外部访问,那么就可以通过重定向来保护,可以使用 jekyll-redirect-from
插件设置,在 _config.xml
添加如下配置。
redirect_from:
- /norobots/
这样访问时会直接返回 404 。
所谓的 Open Graph Protocol 开放内容协议,是由 Facebook 发起的,用来更好的理解一个链接,因为在分享链接时,可能会因为各种原因导致一些有效信息丢失,也可能会有异常数据。
<meta property="og:site_name" content="WebJeda Blog">
<meta property="og:type" content="article">
<meta property="og:url" content="{{ site.url }}{{ page.url }}">
<meta property="og:title" content="{%if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}">
<meta property="og:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}">
所谓的 alt
标签,其实是当图片无法加载时显示的文字内容,所以尽可能在里面添加与文章以及图片相关的关键字,在使用 Markdown 语法时,可以通过如下方式指定。

实际上 GitHub 支持使用 Jekyll SEO Tag 插件,可以支持很多搜索引擎,使用方式如下。
gem 'jekyll-seo-tag'
命令安装;_config.yml
配置文件中,添加 jekyll-seo-tag
插件;{% seo %}
添加到 </head>
之前;注意,如果 Jekyll 的版本小于 3.5.0
,那么添加插件时应该使用:
gems: [jekyll-seo-tag]
而不是
plugins:
- jekyll-seo-tag
通常有 Google、Baidu 等搜索引擎的站长工具,通常需要在网站的 <head> </head>
头部添加类似如下的特定元标记,用于标记确实是你网站,也就是用于认证。
<meta name="baidu-site-verification" content="B786jeR0MV" />
这样就有利于搜索引擎的收录。
如果喜欢这里的文章,而且又不差钱的话,欢迎打赏个早餐 ^_^