hexo是一款非常流行的靜態(tài)博客生成器,它支持多平臺(tái)部署,包括github、gitlab、和coding等,同時(shí)也支持部署到國(guó)內(nèi)的碼云(gitee)平臺(tái)。然而,有一些hexo用戶在將博客部署到gitee時(shí)發(fā)現(xiàn),無(wú)法正常顯示博客內(nèi)容,這個(gè)問(wèn)題該如何解決呢?
首先,我們需要明確一點(diǎn),這個(gè)問(wèn)題并不是由Hexo本身造成的,而是由于gitee平臺(tái)對(duì)跨域請(qǐng)求做了限制。當(dāng)你在使用Hexo將博客部署到gitee平臺(tái)時(shí),它會(huì)生成一些靜態(tài)文件(例如html、css、JS等),這些文件中的圖片、字體、和其他靜態(tài)資源路徑都是相對(duì)路徑,例如“../images/test.png”。當(dāng)你的博客通過(guò)gitee訪問(wèn)時(shí),gitee會(huì)將這些靜態(tài)文件緩存起來(lái),并將緩存的內(nèi)容提供給用戶訪問(wèn),但是當(dāng)用戶需要訪問(wèn)其中的圖片、字體、和其他靜態(tài)資源時(shí),它會(huì)和相對(duì)路徑所在的域名(例如“example.com”)進(jìn)行跨域請(qǐng)求,這時(shí)候問(wèn)題就出現(xiàn)了,gitee平臺(tái)對(duì)跨域請(qǐng)求做了限制,導(dǎo)致了無(wú)法正常顯示博客內(nèi)容。
那么,該如何解決這個(gè)問(wèn)題呢?以下是一些可能的解決方案:
- 使用CDN。使用CDN可以解決路徑相對(duì)的問(wèn)題。你可以將所有的靜態(tài)資源上傳到CDN并設(shè)置地址為絕對(duì)路徑,這樣就可以避免跨域請(qǐng)求的問(wèn)題。例如,“https://cdn.example.com/images/test.png”。但是使用CDN需要付費(fèi),如果經(jīng)濟(jì)條件不允許,可以考慮下面的方案。
- 將所有的靜態(tài)資源上傳到gitee中的某個(gè)倉(cāng)庫(kù)中。在gitee中,我們可以創(chuàng)建一個(gè)新倉(cāng)庫(kù),然后將所有的靜態(tài)資源上傳到這個(gè)倉(cāng)庫(kù)中。我們需要將倉(cāng)庫(kù)中的訪問(wèn)地址添加到Hexo配置文件中,這樣就可以避免跨域請(qǐng)求的問(wèn)題。例如,“https://gitee.com/username/Static/raw/master/images/test.png”。這種方式的缺點(diǎn)是需要手動(dòng)上傳文件,麻煩,但是在博客內(nèi)容不發(fā)生改變的情況下,可以使用緩存功能,減少請(qǐng)求次數(shù)。
- 使用Travis CI。這個(gè)方案需要你具備一定的編程經(jīng)驗(yàn)。Travis CI是一個(gè)集成測(cè)試和部署的工具,可以自動(dòng)構(gòu)建、測(cè)試、和部署代碼到持續(xù)集成服務(wù)器中,這樣就可以實(shí)現(xiàn)自動(dòng)部署博客了。具體的操作可以參考官方文檔,這個(gè)方案比較復(fù)雜,但是效果非常好。
總結(jié)起來(lái),無(wú)法正常顯示Hexo博客的問(wèn)題是由于gitee平臺(tái)對(duì)跨域請(qǐng)求做了限制,可以通過(guò)使用CDN、將靜態(tài)文件上傳到gitee中的某個(gè)倉(cāng)庫(kù)中、和使用Travis CI來(lái)解決這個(gè)問(wèn)題。每種方案都有其優(yōu)缺點(diǎn),可以根據(jù)自己的實(shí)際情況來(lái)選擇適合自己的方案。