Jekyll在Github上建站之后发现即使提交给搜索引擎,也很难被收录或者能被搜索到。如果使用JekyllBootstrapper,已经做了相关的SEO,所以问题不大。但如果是使用其他主题分享或者自己写一个theme,那么就不得不考虑一下SEO的相关问题了。虽然我也从未接触过SEO,不过查阅一些资料,折腾一番还是有收获的。

其中受益于掌心的这篇文章,特别感谢。


提示:为了文章正常显示,取消了代码中解析site或page属性的双大括号,以及if语句中的大括号加百分号。


准备工作

优化工作需要从以下几方面着手:

  1. 站点标题,副标题,描述
  2. 页面标题,关键字,描述
  3. 文章标题,关键字,描述
  4. 文章格式及注意事项
  5. 站点地图
  6. 站点dns稳定性

首先我们需要了解当前主题的网站结构,找到解析站点和页面信息的文件,在之后的操作中需要修改这个文件。由于每个主题的结构不一样,这里举两个例子抛砖引玉。

例子一

_layouts文件夹下找到page和post文件用记事本打开,发现他们都是使用了另一个layout作为模板。

1
2
3
4
---
layout: default
---

那么我们打开default,查找解析站点信息的地方

1
2
3
4
5
6
7
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="author" content=" site.author " />
if page.title
<title> page.title </title>
else
<title> site.name </title>
endif

例子二

同样在_layouts文件夹下找到page和post文件用记事本打开,分析一下下面的内容引用了什么

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<html class="no-js" lang="en"><!--<![endif]-->
<head>
include head.html
</head>
<body id="page">
include navigation.html
<div id="main" role="main">
<article class="entry">
<div class="entry-wrapper">
<header class="entry-header">
<h1 class="entry-title"> if page.headline page.headline else page.title </h1> endif
</header>
<div class="entry-content">
content
</div><!-- /.entry-content -->
</div><!-- /.entry-wrapper -->
</article>
</div><!-- /#main -->
<div class="footer-wrapper">
<footer role="contentinfo">
include footer.html
</footer>
</div><!-- /.footer-wrapper -->
include scripts.html
</body>
</html>

在head中可以看到include head.html,也就是说引用了head.html这个文件,然后我们需要找到这个文件,在这个例子中该文件在_includes文件夹下。打开看看它的内容:

1
2
3
4
5
6
7
<title>
if page.title
page.title &#8211;
endif
site.title
</title>
<meta name="description" content="if page.description page.description else site.description endif ">

这里就解析了站点的title等信息。

找到这个文件后我们就可以可以做优化工作了。

如何实现

1.站点标题,副标题,描述

站点信息在_config.yml文件中配置

1
2
title: site title
description: site description

  • 标题 title : 站点的名称,是站点最重要的信息,一般建议主标题用h1标签
  • 描述 description : 提供站点主要内容的描述,有时候可以当做副标题,一般建议用h2标签

这里提到站点的标题用H1标签,那么我们找到显示站点标题的文件,也许你能在_layouts文件夹的page,default或者文件中找到类似下面的语句

1
2
3
<h1 class="entry-title"> if page.headline page.headline else page.title endif </h1>
<h1><a title="site.name" class="" href="/">site.name</a></h1>

那么如果没有title没有h1标签,就加上,同理副标题或者description也要加h2。我们不需要给网站加关键字,因为我们将会对每个页面加关键字。

2.页面标题,关键字,描述

页面的信息在index.html,tags.html,articles.html或者对应的md文件中设置,给你所有的需要显示的页面都加入标题,关键字和描述信息。例如

1
2
3
4
5
6
7
---
layout: page
permalink: /about/
title: About Me
description: "my information"
keywords: about, XX, XX
---

3.文章标题,关键字,描述

其实文章信息同页面信息是一样的,我们需要给_posts文件夹下的每一篇文章都添加title,description和keywords信息

1
2
3
4
5
6
7
8
9
10
11
12
---
date: XX
layout: post
tags: [XX]
title: XX
description: "XX"
keywords: Jekyll, SEO
share: true
categories:
- XX
---

设置好信息后就需要添加解析方法了。回到上一节中提到的解析站点和页面信息的文件。替换或加入下面内容:

1
2
3
4
5
6
7
8
9
10
<title>
if page.title page.title
&#8211;
endif
site.title
</title>
<meta name="description" content="if page.description page.description else site.description endif ">
if page.keywords
<meta name="keywords" content=" page.keywords | join: ', ' ">
endif

其中title是网页打开后标签显示的名称,这里设置的是页面名称加横杠再加站点名称,比如Index-Baidu.com.格式建议设置成这样或者只显示page的title不显示site的title。

description要放在meta标签中,这里显示页面的描述。

keywords也要放在meta标签中,值得一提的是很多主题把page的tag当做keywords解析到keywords的meta标签中,这里是不推荐的,如果是这样,就把tag替换成keywords。

4.文章格式及注意事项

由于我的站点是从wordpress导过来的,很多格式都出现了问题,还是需要一篇篇调整,这是一个需要耐性的工作。在调整格式的过程中可以给文章添加描述关键字等信息,最好给文章都加入categories属性

每篇文章应注意使用h1h2h3等标签,有助于调整层次。当然不要过量使用,可能会被搜索引擎识别为造假。给关键字添加strong标签,strongb标签以及加粗都是一个效果,使用strong会更容易让搜索引擎分析。

掌心的文章中也指出了处理链接的问题,我们要避免搜索引擎重复抓取链接,比如index页面列出了最近10篇文章,articles页面列出了所有文章,那么搜索引擎会重复抓取文章的链接,会导致权重下降。那我们就把不必要页面或者链接让蜘蛛抓取。这时候需要设置nofollow标签,方法有下面两种:

1
2
<meta name="robots" content="nofollow" />
<a href=http://***.com/ rel="nofollow"></a>

第一种放在meta标签中,表示整个页面都不让蜘蛛抓取。
第二种放在a链接中,表示这个超链接不让蜘蛛抓取,比如主页显示的文章有readmore超链接,就可以这样设置。

5.站点地图

一般的主题都会自带一个订阅和一个站点地图,如果没有站点地图,可以在站点根目录下新建sitemap.xml,格式可以参考这里

然后我们可以把它提交给谷歌,bing,yahoo等。但是百度没有提供这一功能。

用谷歌举例https://www.google.com/webmasters,我们在google的webmaster管理工具中提交。

6.站点dns稳定性

使用国外的域名提供商的dns很有可能不稳定,这时候需要更换dns,保证页面不会经常解析失败。同时要确保站点内所有的页面都能正常访问。出现404错误会降低站点权重。

通过上述几种方法可以提高网站被搜索引擎收录的几率。当然,还可以深入的去做seo,这里就不再多说了。