博客在搭建完成后進(jìn)行了適當(dāng)?shù)腟EO硼控,然后我分別將站點(diǎn)提交了谷歌和百度進(jìn)行收錄痊项,提交的是GitHub Pages的地址。然而萝喘,提交給谷歌后不久就被收錄了淮逻,但是百度卻遲遲沒有收錄。當(dāng)時這個問題還一直找不到原因阁簸,直到我試圖在百度站長平臺檢測自己網(wǎng)站Robots時爬早,根據(jù)錯誤信息才發(fā)現(xiàn)百度爬蟲無法抓取,因?yàn)镚itHub禁掉了百度爬蟲∑裘茫現(xiàn)將解決的過程記錄下來筛严。
解決思路
這個問題的解決辦法網(wǎng)上有幾種說法,大致分為三種:
- 放棄將博客部署在GitHub上饶米。
- 利用CDN桨啃。
- 同時部署到GitHub和Coding。
在知道這個問題的原因之后檬输,第一時間想到的是就是搞一個云服務(wù)器照瘾,將博客部署到云服務(wù)器上。但是丧慈,考慮到云服務(wù)器只部署博客有點(diǎn)虧析命,而暫時也沒有其他的東西需要用到云服務(wù)器,所以就放棄了逃默,還是打算部署在GitHub上鹃愤。
第二種利用CDN來代理GitHub Pages上的博客的方法并不能很好的解決這個問題,因?yàn)槿绻浇墓?jié)點(diǎn)沒有緩存完域,爬蟲仍然會去爬取GitHub Pages上的內(nèi)容昼浦。
所以綜合考慮,最后采取了第三種辦法筒主,同時部署到GitHub和Coding上关噪,通過域名解析鸟蟹,將國內(nèi)的請求解析到Coding上。
操作過程
部署到Coding
首先去Coding上注冊了個賬號并配置一下SSH Key使兔,然后創(chuàng)建了一個<username>.coding.me
的倉庫建钥,接著在hexo的配置文件中添加該倉庫的地址,如下所示虐沥。
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo:
- git@github.com:hezhii/hezhii.github.io.git
- git@git.coding.net:hezhou/hezhou.coding.me.git
branch: master
這樣就能同時將博客內(nèi)容推到GitHub和Coding上熊经。在Coding上選擇項(xiàng)目-->代碼-->Pages 服務(wù)
,然后選擇相應(yīng)的分支即可完成部署欲险。這樣镐依,通過<username>.github.io
和<username>.coding.me
就都能訪問到博客了。
這里有一個問題需要注意天试,如果使用了Travis CI進(jìn)行自動部署并且是SSH方式登陸的槐壳,需要在ssh_config文件中添加上Coding相關(guān)配置,ssh_config中的內(nèi)容如下所示喜每。
Host github.com
User git
StrictHostKeyChecking no
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
Host git.coding.net
User git
StrictHostKeyChecking no
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
域名申請并解析
完成了博客的部署后务唐,就需要去弄個域名并添加解析。我是在萬網(wǎng)申請的域名带兜,申請完成后添加4條CNAME記錄枫笛,將國內(nèi)和國外的請求分別解析到Coding和GitHub,如下所示刚照。
域名在申請后需要進(jìn)行實(shí)名認(rèn)證刑巧,否則將會停止解析,實(shí)名認(rèn)證十分簡單无畔,上傳個身份證正面照就可以了海诲。審核所需時間說是3~5個工作日,但是我提交審核后過了6個工作日才完成檩互。
域名綁定
域名解析成功后特幔,并不能通過域名訪問博客,需要分別在GitHub和Coding上綁定自己申請的域名闸昨。其中蚯斯,在博客的source目錄下新建一個CNAME文件,文件寫上自己申請的域名(不需要http://
饵较,www
可有可無)并提交拍嵌,即可完成GitHub上的綁定;而Coding上的綁定則更加簡單循诉,在Pages服務(wù)頁面横辆,通過自定義域名更能進(jìn)行綁定即可。綁定完成后茄猫,待域名的解析生效即可通過申請的域名訪問到博客了狈蚤。我通過開關(guān)VPN分別訪問進(jìn)行了測試困肩,確實(shí)國內(nèi)會被解析到Coding,國外會被解析到GitHub脆侮。
其他問題
- 這樣做之后锌畸,如果需要給其他的項(xiàng)目添加GitHub Pages服務(wù),在國內(nèi)就無法訪問靖避,我目前采取的方案是仍然同時部署到GitHub和Coding潭枣。
- 在百度站長上進(jìn)行網(wǎng)站驗(yàn)證時,通過HTML方式驗(yàn)證會返回一個302的錯誤幻捏,懷疑是因?yàn)镃oding有一個跳轉(zhuǎn)頁導(dǎo)致盆犁,目前沒想好解決辦法,采用CNAME的方式進(jìn)行驗(yàn)證篡九。
- 在百度站長上提交sitemap時谐岁,出現(xiàn)了一個主域校驗(yàn)失敗的錯誤,檢測sitemap.xml文件后瓮下,發(fā)現(xiàn)上面的地址仍是GitHub Pages的地址翰铡,需要將hexo配置文件中的url設(shè)置為申請的域名钝域。