解决百度无法收录搭建在GitHub上的个人博客的问题
# 解决百度无法收录搭建在GitHub上的静态博客的问题
注意
如果你正在寻找本博客的搭建文档,博主建议您查看这个仓库的README (opens new window)。
# 背景
由于GitHub禁止百度爬虫访问,造成托管在GitHub Pages上的博客无法被百度收录。相关问题可以通过百度站长平台的抓取诊断
再现,每次都是403 Forbidden的错误。
# 解决方案
同时将博客同时同步托管到GitHub Pages(国外访问较快)和国内访问较快的站点,coding pages (opens new window)上或者vercel上,解决百度不收录问题。
# 1. coding pages
最后发现在国内使用coding pages打开速度特别快,而且还会被百度收录,可以把coding pages的站点作为主站点,原本在github pages的可以作为分站点。
步骤:
1、注册coding (opens new window)账号,创建仓库,把代码推送到coding仓库,并开启pages服务。
git 操作部分和使用github的差不多,不了解git操作的可以看我的另一篇文章:Git使用手册 (opens new window)
2、我的博客项目使用vuepress搭建的,使用的是如下自动部署脚本,同时将代码推送到github和coding。
#!/usr/bin/env sh
# 确保脚本抛出遇到的错误
set -e
# 生成静态文件
npm run build
# 进入生成的文件夹
cd docs/.vuepress/dist
# github
echo 'b.songbenblog.com' > CNAME
git init
git add -A
git commit -m 'deploy'
git push -f git@github.com:xugaoyi/blog.git master:gh-pages # 发布到github
# coding
echo 'songbenblog.com' > CNAME
git add -A
git commit -m 'deploy'
git push -f git@git.dev.tencent.com:xugaoyi/xugaoyi.git master # 发布到coding
cd - # 退回开始所在目录
rm -rf docs/.vuepress/dist
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
因为我想给两个平台上绑定不同的自定义域名,因此我分开创建了CNAME文件。
3、有自定义域名的,也可以在coding pages绑定自定义域名,域名DNS解析中添加CNAME记录指向coding pages的站点地址即可。(没有自定义域名的可忽略,同时把自动部署脚本中的创建CNAME文件的脚本去掉)
最后,使用百度站长的抓取诊断,发现抓取成功啦,再使用百度站长的链接提交 (opens new window)功能,把链接提交给百度,过一段时间就可能在百度搜索中搜索到啦。
# 2. vercel 部署
因为有时候Github 和 Coding 无法访问,搭载的服务不稳定,也可以选择vercel作为博客的搭建服务。因为vercel在境内设有服务器,在境内访问速度比Githhub快,同时还有100G的加速服务,会自动申请免费的Let's Encrypt 证书,自动同步Github仓库部署,不需要同时部署两次啦。
步骤:
- 登录Vercel官网,选择Github方式登录;
- 选择 + New Project后,在Import Git Repository中选择Github pages仓库,FRAMEWORK PRESET 选择 Other,点击 Deploy;
- 部署完毕之后,就需要绑定上自己的域名了:在Setting -> Domains,Add 添加自己申请的域名;
- 添加后可以看到错误信息Invalid Configuration,因为你光在这里设置域名,还需要在自己申请的域名添加CNAME记录啊,要不然你不是随便填个别人的域名,就把别人的网站内容给改了,这不是太不合理了嘛!!!
所以需要修改直接的域名解析设置,将它指向vercel的服务器:
主机记录 | 记录类型 | 记录值 |
---|---|---|
@ | A | 76.76.21.21 |
www | CNAME | cname.vercel-dns.com. |
含义分别是:
- 直接解析主域名,也就是你申请的域名,指向vercel的IP地址;
- 将域名前面加上www.解析,并且将域名指向vercel的域名地址,与其保持相同DNS解析。
这样,通过Github pages部署时添加自定义域名,结合Vercel部署,可以实现国外访问Github pages,国内访问Vercel站点内容,这样百度蜘蛛可以抓取国内站点内容,提高被收录的几率。
提示
部署到Vercel上,Github部署会自动同步到Vercel,此处需要设置关联Github 哪个分支触发Vercel自动部署,在Setting->Git->Production Branch
。
# 测试是否部署成功
怎么判断境内访问的是Github page部署的,还是vercel部署的呢?可以通过ping域名来实现:
- Window打开Cmd,刷新DNS,ipconfig/flushdns
- 分别ping 自己的域名,和github pages域名,如果ping的地址和响应不同,则可以判断部署成功啦!
# 如何知道百度有没有收录?
在百度搜索框中使用site:<链接地址>,如:
site:songbenblog.com