一、百度收录
在这之前,需要注意:
GitHub不允许百度的Spider(蜘蛛)爬取GitHub上的内容的,所以任何部署在GitHub上的静态博客都是不能百度爬取到的!
1.1 提交站点
刚建完站在百度上是不可能搜索到我们的网站的,我们可以先试一下:在百度上搜索 site:<你的域名>,一般是搜不到的,然后点击 提交网址 来先将自己的网站提交给百度。

1.2 添加站点
登录百度搜索资源平台, 只要是百度旗下的账号就可以, 登录成功之后在站点管理中点击添加网站,输入域名,按着这三步来进行。

第三步验证网站的时候, 验证网站所有权的方式有三种:
- 文件验证
HTML标签验证CNAME解析验证(推荐使用)
同理,百度的spider是爬取不到GitHub的内容的,所以HTML标签验证方式也是不太可取的。

1.3 推送资源
经过以上步骤,百度已经知道有我们网站的存在了,但是百度还不知道我们的网站上有什么内容,所以要向百度推送我们的内容。
还是在百度资源搜索平台,找到数据引入->链接提交,可以看到向百度推送自己的内容有两个方式:
自动提交
(分三种)
- 主动推送
- 自动推送
- sitemap(站点地图)
手动提交
- 即手动地将链接一次性提交给百度
一般自动提交比手动提交效果好一点,自动提交又从效率上来说:
主动推送 > 自动推送 > sitemap
自动提交的三种方式:
主动推送:最为快速的提交方式。将站点当天新产出链接通过此方式推送给百度,以保证新链接可以及时被百度收录。自动推送:最为便捷的提交方式。将自动推送的JS代码部署在站点的每一个页面源代码中,当部署代码的页面在每次被浏览时,链接就会被自动推送给百度。可以与主动推送配合使用。sitemap:您可以定期将网站链接放到sitemap文件中,然后将sitemap文件提交给百度。百度会周期性的抓取检查您提交的sitemap,对其中的链接进行处理,但收录速度慢于主动推送。
1.3.1 sitemap推送
安装sitemap插件
npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save
这两个插件是用来生成 Sitemap文件 的插件,而 Sitemap 是用来告知搜索引擎我们的网站上有哪些可供抓取的网页的。
注意一点:
hexo配置文件中的url一定要改成你的域名,这两个插件是根据你的url生成站点地图的。
安装后直接执行hexo cl&&hexo g命令,然后就会在网站根目录生成sitemap.xml文件和baidusitemap.xml文件,其中sitemap.xml文件是搜索引擎通用的文件,baidusitemap.xml是百度专用的sitemap文件。
有sitemap文件之后,再将生成的sitemap文件提交给百度或者其他搜索引擎
百度方式:在自动提交的sitemap那里填写自己sitemap文件的URL地址即可
https://你的域名/baidusitemap.xml
提交后会有状态提示等待,这里需要注意严格区分http和https:
http和https是不一样的,刚添加的站点是HTTP协议的,如果你网站开启了
强制https,是会报301重定向错误的,也就是百度不能抓取到你的sitemap如果想用https,可以在
数据监控->HTTPS认证进行认证这个认证有时会很慢,可以在你的站点只留一个首页的
简单HTML,然后再去百度认证,这样应该会快一点。
如果是其他的搜索引擎,一般是在填写sitemap的地方,填写以下内容即可:
https://你的域名/sitemap.xml
1.3.2 自动推送
只要每个需要被百度爬取的HTML页面中加入一段JS代码即可:
<script>
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
我所使用的matery主题可以自动给每个页面加上这段代码,只需在主题配置文件中配置:
# 百度搜索资源平台提交链接
baiduPush: true
其他主题一般都有这个功能的实现,如果没有的话,想办法在每个页面加入以上JS代码即可,原理是一样。
1.3.3 主动推送
安装主动推送插件:hexo-baidu-url-submit
npm install hexo-baidu-url-submit --save
然后打开hexo配置文件,在末尾加入以下配置:
# hexo-baidu-url-submit 百度主动推送
baidu_url_submit:
count: 80 # 提交最新的一个链接
host: adaichan.life # 在百度站长平台中注册的域名
token: xxxxxxx # 请注意这是您的秘钥, 所以请不要把博客源代码发布在公众仓库里!
path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里
密匙的获取是在百度的自动提交的主动推送那里。

再加入新的deploy:
deploy:
- type: baidu_url_submitter
这样每次执行 hexo d 的时候,新的链接就会被推送了。
推送成功时,会有deploy done!终端提示。
各种不同的推送反馈字段说明点我查看,一般来说,推送失败基本都是地址不相符造成的,我们只需对比baidu_url_submit在public中生成的baidu_urls.txt的地址,与自己填写在host字段中的地址对比看是否一样即可。
二、谷歌收录
相比于百度,google 的效率实在不能更快,貌似一天左右站点就被收录了,其实方法是和百度是一样的。
2.1 具体步骤
- 首先登录谷歌站长平台,添加好自己的域名
DNS验证(就是验证下网站是不是你的)就是域名解析那里添加一条TXT解析记录- 然后点击验证即可
- 进入谷歌的Search Console,添加自己的
sitemap地址 - 接下来,等就完事嘞
2.2 提交 robots.txt
robots.txt是干嘛的?
robots.txt 是一种存放于网站根目录下的 ASCII 编码的文本文件,它的作用是告诉搜索引擎此网站中哪些内容是可以被爬取的,哪些是禁止爬取的。robots.txt 要放在 Hexo根目录 下的 source 文件夹中。
每个人站点目录可能不太一样,可以参考下我的 robots.txt 文件,内容如下:
User-agent: *
Allow: /
Allow: /posts/
Disallow: /about/
Disallow: /archives/
Disallow: /js/
Disallow: /css/
Disallow: /contact/
Disallow: /fonts/
Disallow: /friends/
Disallow: /libs/
Disallow: /medias/
Disallow: /page/
Disallow: /tags/
Disallow: /categories/
更多关于 robots.txt 的写法参见 https://blog.csdn.net/fanghua_vip/article/details/79535639
编写完以上内容再重新部署一下,然后到百度资源平台的数据监控->Robots点击检测并更新 看能不能检测到。
同样注意:刚添加的站点没有进行 HTTPS认证,直接检测有可能会报301错误。
2.3 配置 Nofollow
- nofollow 是HTML页面中
a标签的 属性值。 - 这个属性的作用是:告诉搜索引擎的爬虫不要追踪该链接,为了对抗博客垃圾留言信息
三、URL 优化
一般来说,SEO搜索引擎优化认为,网站的最佳结构是 用户从首页点击三次就可以到达任何一个页面,但是我们使用Hexo编译的站点结构的URL是:域名/年/月/日/文章标题四层的结构,这样的URL结构很不利于SEO,爬虫就会经常爬不到我们的文章,于是,我们需要优化一下网站文章的URL
3.1 方案一
直接改成域名/文章标题的形式,在Hexo配置文件中修改permalink如下:
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://adaichan.life
root: /
permalink: :title.html
permalink_defaults:
这个方式有个不好的地方:
直接以文章的标题作为URL,而我们所写的文章的标题一般都是中文,但是URL只能用字母数字和标点符号表示,所以中文的URL只能被转义成一堆符号,而且还特别长。
3.2 方案二
安装固定链接插件:hexo-abbrlink
插件作用:自动为每篇文章生成一串数字作每篇文章的URI地址。每篇文章的Front-matter中会自动增加一个配置项:abbrlink: xxxxx,该项的值就是当前文章的URI地址。
Hexo根目录执行:
npm install hexo-abbrlink --saveHexo配置文件末尾加入以下配置:# hexo-abbrlink config 、固定文章地址插件 abbrlink: alg: crc16 #算法选项:crc16、crc32,区别见之前的文章,这里默认为crc16丨crc32比crc16复杂一点,长一点 rep: dec #输出进制:十进制和十六进制,默认为10进制。丨dec为十进制,hex为十六进制Hexo配置文件中修改permalink如下:# URL ## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' url: http://adaichan.life root: / permalink: posts/:abbrlink.html permalink_defaults:
这样站点结构就变成了:域名/posts/xxx.html