新博客上线多天之后,通过百度和Google仍然搜索不到我写的内容。忽然意识到这应该是网站没有被搜索引擎索引。经过搜索,发现还真是这么回事。直接搜索:site:orchidflower.oschina.io
和site:orchidflower.github.io
,发现真的没有找到相关的记录。
经过上网查找原因,找到了一些资料,原来Hexo已经有这方面的解决方案了。
根据网上搜索到的资料,要解决这个问题总体上可以分为两步:
- 在搜索引擎注册网站;
- 提交链接信息或者站点地图给搜索引擎。
下面简单描述一下过程。
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
文件,添加如下内容即可:
1google_site_verification: [your code from google]
2baidu_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
的。
1npm install hexo-generator-sitemap --save
2npm 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<?xml version="1.0" encoding="UTF-8"?>
2<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3 {% for post in posts %}
4 <url>
5 <loc>{{ (config.urlforgoogle+post.path) | uriencode }}</loc>
6 {% if post.updated %}
7 <lastmod>{{ post.updated.toISOString() }}</lastmod>
8 {% elif post.date %}
9 <lastmod>{{ post.date.toISOString() }}</lastmod>
10 {% endif %}
11 </url>
12 {% endfor %}
13</urlset>
第5行中,使用了一个变量config.urlforgoogle
,这里指定了Github站点的地址。具体值可以参考下面的说明。
2.3 配置文件
修改配置文件_config.yml
,增加如下内容:
1urlforgoogle: http://orchidflower.github.io/
2
3# 自动生成sitemap
4sitemap:
5 path: sitemap.xml
6baidusitemap:
7 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搜索到;百度还不行。