Hexo博客提交搜索引擎

新博客上线多天之后,通过百度和Google仍然搜索不到我写的内容。忽然意识到这应该是网站没有被搜索引擎索引。经过搜索,发现还真是这么回事。直接搜索:site:orchidflower.oschina.iosite:orchidflower.github.io,发现真的没有找到相关的记录。

经过上网查找原因,找到了一些资料,原来Hexo已经有这方面的解决方案了。

根据网上搜索到的资料,要解决这个问题总体上可以分为两步:

  1. 在搜索引擎注册网站;
  2. 提交链接信息或者站点地图给搜索引擎。

下面简单描述一下过程。

1. 注册网站

不论Google还是百度都提供了站长工具,可以让网站拥有者自助提交网站信息。相当于给搜索引擎的爬虫指个方向,能够更快速的索引你的网站。相关的网站地址为:Google搜索引擎提交入口百度提交入口

1.1 前提条件

首先你要有对应的搜索引擎的账号。因为Google和百度的操作过程基本类似,所以只描述Google的操作步骤。

1.2 步骤

登录Google之后,选择添加一个网址。添加完之后需要做验证。验证的目的是证明你对提交的网址确实有管理权,防止别人胡乱操作。验证的方法有几种,比较方便的有:

1.2.1 HTML验证

验证方式就是将Google提供的文件放置到你网站的根目录上,Google可以访问到就可以了。

所以下载验证文件,放到source目录中,执行hexo deploy重新发布应该就可以了;

1.2.2 HTML标记验证

验证方式就是在网站的页面中添加一个meta属性,这样Google访问网页后可以从中解析出来对应的meta,以此证明网站归你管理。

这种方式Hexo已经提供了内置支持。只需要修改Hexo的_config.yml文件,添加如下内容即可:

1
2
google_site_verification: [your code from google]
baidu_site_verification: [your code from baidu]

添加之后,执行hexo generate; hexo deploy,应该就可以了。

1.2.3 完成验证

无论采取上面那种方式,博客重新发布之后就可以在Google中点击验证确认网站所有权了。正常情况下,这样研究就通过了。如果碰到问题,请仔细检查以上几步是否有操作错误。

2. 提交链接信息

要让搜索引擎索引我们的网站,比较好的方法是提交站点地图文件(sitemap.xml)给搜索引擎。

站点地图文件是一个xml文件,其中包含了我们网站所有有效的链接,这样搜索引擎可以直接从中抓取有用的链接,理论上可以不用使用爬虫对网站进行扫描了。

幸运的是Hexo目前有插件可以很方便的生成站点地图文件。生成的文件会随着deploy发布到我们的网站上。这个文件可以通过url直接访问到,我们只需要将这个url提交给所搜引擎即可,不用每次更新之后再次提交。一次提交,终生受益:)

2.1 安装插件

首先是安装插件。这两个插件实际上的功能差不多,如果你只有一个域名,提交给Google和百度的站点地图文件是一样的,那随便安装哪一个都可以。但是如果你有多个域名(镜像),像我这样在Github和OSChina上都有站点,那就需要安装两个插件,分别用来生成提交给Google和百度的站点地图文件。

对我来说,使用hexo-generator-sitemap生成提交给Google的文件,里面的链接都是对应网址orchidflower.github.io的;使用hexo-generator-baidu-sitemap生成提交给百度的文件,里面的链接都是orchidflower.oschina.io的。

1
2
npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save

2.2 修改

默认情况下,这两个插件生成的url都会使用_config.yml文件中的url属性计算出来的路径。这样实际上生成的两个文件中的链接是一样的,这样不符合我的要求。所以我对hexo-generator-sitemap插件进行了一点修改,从而针对Google的文件里面制定了Github上面的网址。修改方法如下:

修改文件node_modules/hexo-generator-sitemap/sitemap.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for post in posts %}
<url>
<loc>{{ (config.urlforgoogle+post.path) | uriencode }}</loc>
{% if post.updated %}
<lastmod>{{ post.updated.toISOString() }}</lastmod>
{% elif post.date %}
<lastmod>{{ post.date.toISOString() }}</lastmod>
{% endif %}
</url>
{% endfor %}
</urlset>

第5行中,使用了一个变量config.urlforgoogle,这里指定了Github站点的地址。具体值可以参考下面的说明。

2.3 配置文件

修改配置文件_config.yml,增加如下内容:

1
2
3
4
5
6
7
urlforgoogle: http://orchidflower.github.io/

# 自动生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml

其中指定了urlforgoogle,配置了提交给Google的站点地图文件中的站点是Github上的。另外两个参数分别指定了两个地图文件的名字。

2.4 提交

分别把http://orchidflower.github.io/sitemap.xml提交给Google;把http://orchidflower.oschina.io/baidusitemap.xml提交给百度。然后就是等待吧。

3. 后续

  • 2.13 提交给Google和百度;
  • 2.14 已经能够通过Google搜索到;百度还不行。

附录A. 参考资料

热评文章