SEO 指的是搜索引擎优化。通过搜索引擎优化,可以提高网站的网站关键词排名以及博客文章的曝光度。
个人的网站搭建好之后,百度谷歌等搜索引擎其实是收录不到我们网站内容的,并且托管在 Github 上的站点甚至进行了反爬虫处理,搜索引擎的小蜘蛛更加爬不到你的 Blog 了。
因此我们要做的是提交搜索引擎收录,使得搜索引擎收录我们的网站。考虑到我们在国内,因此本文只讲解如何实现百度搜索引擎收录,Google 的原理其实和百度的类似。
一个好的 URL 设计,不仅有利于网络爬虫的爬取,更有利于用户的体验。
正确的 URL 设计应该满足:
-;如果你的站点是使用 Hexo 框架搭建的,那么我建议你安装下面其中一款插件实现 URL 优化(排名具有先后顺序):
在搜索引擎中输入 site:域名 ,查看站点是否被收录,可以看到站点没有被收录:

站长平台推荐站长添加主站(您网站的链接也许会使用 www 和非 www 两种网址,建议添加用户能够真实访问到的网址),添加并验证后,可证明您是该域名的拥有者,可以快捷批量添加子站点,查看所有子站数据,无需再一一验证您的子站点。
关于选择验证站点选择的协议上,有两点要说明:
- 如果你的站点购买了域名: 建议你先将站点实现全站 HTTPS ,再在百度站长平台中选择 HTTPS 协议认证。如若 HTTPS 认证始终没能通过,再选择认证 HTTP 协议。
 - 如果你的站点是部署在 Github/Gitee 并没有购买域名: 因为 Github/Gitee 实现了强制 HTTPS 协议,你可能必须要在百度站长平台中选择 HTTPS 协议认证。如果选择的是 HTTP 协议认证,会出现验证失败的情况,并提示你将 http 的 url 301 到 https 的 url。关于这一点,我会在后面说明。
 
下文将以选择 HTTP 协议认证为例:
1. 进入官网:百度搜索资源平台官网
2. 点击“用户中心” → “站点管理”:

3. 输入域名网址:

4. 设置站点领域:

5. 选择验证方式:
meta标签,放到首页<head>与 </head> 标签之间即可完成验证CNAME记录即可完成验证刚开始我选择的是文件验证方式,但一直提示验证文件内容不符,因此选择了 HTML 标签验证:

将标签放在 Hexo 文件主题目录下\themes\Chic\layout\_partial的head.ejs的<head>与 </head> 标签之间(文件路径供参考)
<meta name="baidu-site-verification" content="XXXXXXXXXX" />
6. 点击完成验证,并等待审核:

几小时过后,站长平台会提示你审核结果:

以我的站点为例,站点是双线部署在 Github/Gitee 上的,并没有购买域名。即我的域名还是原始域名:https://yourname.github.io && https://yourname.gitee.io,可以看到 Github 与 Gitee 都已经将你的网站强制部署在 https 安全域名下。
因此当我在百度站长平台中选择认证 HTTP 协议时:

我的验证是失败的:

并提示你将 http 的 url 301 到 https 的 url:

关于 301,大多数玩 SEO 的朋友都了解,在这里不多说,贴下百度站长平台的解释:
- HTTPS 协议的站点信息更加安全,同时可降低网站被劫持的风险,如网站同时存在 HTTP 和 HTTPS 站点,可使用本工具进行认证,便于百度搜索识别网站。HTTP 与 HTTPS 之间的对应关系,识别成功后,搜索端将及时展示网站 HTTPS 资源;
 - 使用 HTTPS 认证,需要保证全站所有链接都支持 HTTPS 访问;
 - 每个站点每天最多可使用 3 次认证功能;
 
进入链接:资源提交 → 链接提交

百度提供了自动提交和手动提交两种方式,其中自动提交又分为主动推送、自动推送和 sitemap 三种方式,以下是官网给出的解释:
主动推送:最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
自动推送:是轻量级链接提交组件,将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。
sitemap:您可以定期将网站链接放到 Sitemap 中,然后将 Sitemap 提交给百度。百度会周期性的抓取检查您提交的 Sitemap ,对其中的链接进行处理,但收录速度慢于主动推送。
手工提交:如果您不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。
| 方式 | 主动推送 | 自动推送 | sitemap | 手工提交 | 
|---|---|---|---|---|
| 速度 | 最快 | —— | —— | —— | 
| 开发成本 | 高 | 低 | 中 | 不需开发 | 
| 可提交量 | 低 | 高 | 高 | 低 | 
| 是否建议提交历史连接 | 否 | 是 | 是 | 是 | 
| 和其他提交方法是否有冲突 | 无 | 无 | 无 | 无 | 
从效率来说,主动推送 > 自动推送 > sitemap
1. 使用主动推送功能会达到怎样效果:
2. 在博客根目录安装插件 :
npm install hexo-baidu-url-submit --save
然后在根目录 _config.yml 文件里写入以下配置:
baidu_url_submit:
  count: 10                           # 提交最新的多少个链接
  host: https://yourname.gitee.io/    # 在百度站长平台中添加的域名
  token: your_token                   # 秘钥
  path: baidu_urls.txt                # 文本文档的地址,新链接会保存在此文本文档里
记得查看 Hexo 根目录_config.yml文件中url的值,必须包含是百度站长平台注册的域名, 比如:
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: https://yourname.gitee.io/
root: /
permalink: :year/:month/:day/:urlname/
token 可以在链接提交  →  自动提交  →  主动推送下面看到,接口调用地址最后面 token=xxxxx 即为你的 token:

3. 在根目录 _config.yml 修改 deployer:
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
- type: git 			## 这是原来的deployer
  repo:
  branch:
- type: baidu_url_submitter 	## 在这里添加新内容即可
4. 最后执行 hexo g -d 部署一遍即可实现主动推送,推送成功的标志是:在执行部署命令最后会显示类似如下代码
{"remain":2992,"success":7}
INFO  Deploy done:  baidu_url_submitter
5. 查看推送反馈:
| 字段 | 是否必选 | 参数类型 | 说明 | 
|---|---|---|---|
| success | 是 | int | 成功推送的url条数 | 
| remain | 是 | int | 当天剩余的可推送url条数 | 
| not_same_site | 否 | array | 由于不是本站url而未处理的url列表 | 
| not_valid | 否 | array | 不合法的url列表 | 
{
   "remain":4999998,
   "success":2,
   "not_same_site":[],
   "not_valid":[]
}
6. 同时在hexo\.deploy_git\路径下会生成一个baidu_urls.txt文件,其中包含了你站点中的 URL 链接:

自动推送是百度搜索资源平台为提高站点新增网页发现速度推出的工具,安装自动推送 JS 代码的网页,在页面被访问时,页面 URL 将立即被推送给百度。
1. 服务对象及原理:

2. 操作:

有些 hexo 主题集成了这项功能,比如 Next 主题,在themes\next\layout_scripts\下有个 baidu_push.swig 文件,只需要把代码粘贴到该文件,然后在主题配置文件设置 baidu_push: true 即可。
对于大部分 Hexo 主题是没有集成这项功能的,我们可以把代码粘贴到 header.ejs 文件的 <head> 与 </head> 标签之间即可,从而实现自动推送。
代码:
<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>
生成一个网站地图:
npm install hexo-generator-baidu-sitemap --save
记得查看 Hexo 根目录_config.yml文件中url的值,必须包含是百度站长平台注册的域名, 比如:
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: https://yourname.gitee.io/
root: /
permalink: :year/:month/:day/:urlname/
使用命令 hexo g -d 将网站部署上去,然后访问 你的域名/baidusitemap.xml 就可以看到网站地图
来到百度站长平台的 sitemap 提交页面,将你的 sitemap 地址提交即可。如果以后你博客有新的文章或其他页面,可以点击手动更新文件,更新一下新的 sitemap。

手动提交不需要其他额外操作,直接把需要收录的页面的 url 提交即可,这种方法效率较低,更新较慢,不推荐使用。

![]()  | 
![]()  | 
|---|

输入 site: 域名 ,查询:

https://ziyuan.baidu.com/college/courseinfo?id=267&page=1#02
https://ziyuan.baidu.com/college/courseinfo?id=267&page=2#h2_article_title18
https://www.itrhx.com/2019/09/17/A48-submit-search-engine-inclusion/
好了,接下来就可以愉快玩耍了,欢迎留言讨论!