本文章最初發表在XJHui’s Blog,未經允許,任何人禁止轉載!
為使您獲得最好的閱讀體驗,強烈建議您點選 這裡 前往 XJHui’s Blog 檢視!
前言
本教程僅适用于部署在Zeit.co的個人網站。
我的部落格使用的是
Hexo架構
+
Butterfly主題
+
GitHub倉庫
+
Zeit.co部署
+
又拍雲CDN
(這不是在打廣告,很認真的在寫部落格),主題配置檔案中有404頁面的具體設定:
這樣配置能渲染出404頁面:
但當你真正404時:
配置好404後也沒有測試過,一直以為我的404頁面是正常的…
踩坑經曆
這裡記錄踩坑經曆,想跳過的可以直接傳送到 這裡 。
-
百度找到Yavin的這篇文章中有說解決方法:
建立
檔案:now.json
并把它放到{ "version": 2, "routes": [ { "handle": "filesystem" }, { "src": "/(.*)", "status": 404, "dest": "/404.html" } ] }
(我當時認為是根目錄
),Hexo的根目錄
後自動在hexo g
下生成/public
檔案: 于是我興奮的now.json
後發現送出至hexo d
失敗了: 英文看不懂?就是說生成的Zeit.co倉庫
不符合規範(存在json檔案
),仔細看上圖會發現文法錯誤
中包含了JavaScript,至于為什麼會這樣至今我也不知道,如果您知道原因歡迎到json檔案
留言(失敗)。評論區
- 于時更換了
檔案位置,把他放在了now.json
的根目錄,結果發現hexo g後在/public檔案夾下未生成now.json檔案(失敗)。主題
- 既然無法生成,那我就直接到GitHub倉庫,建立
檔案并把上面的now.json
沾了進去,再次送出竟然成功了,這才明白原來Yavin說的代碼
是指根目錄
,但這樣做存在的問題是下次倉庫根目錄
後hexo d
檔案會直接被删掉(失敗)。now.json
- 我知道
其實就是把hexo d
中的檔案上傳到倉庫。想把json檔案放到倉庫根目錄其實就是先放到/public中,于時開始想哪裡的檔案/public
後能直接生成在hexo g
中,看了一眼倉庫中的檔案: 有點熟悉呀,這三個檔案夾不就是/public
主題根目錄/source
(不是hexo根目錄下的/source)中的三個檔案夾?:
于時我很開心的把
檔案放進了now.json
/source
中
哈哈,測試沒問題,終于解決了。
解決404頁面無法顯示
本部落格提供的方法僅在Hexo部落格架構下Butterfly主題測試,其餘架構或主題可自行嘗試。
若您的主題使用了頁面壓縮(gulp…),需要先排除掉
這個檔案。
conf.json
在主題根目錄/source下建立now.json檔案,粘貼下面的代碼:
{
"version": 2,
"routes": [
{ "handle": "filesystem" },
{ "src": "/(.*)", "status": 404, "dest": "/404.html" }
]
}
注:該json檔案會調用404.html,是以要保證倉庫根目錄有404.html檔案,當然也可以寫成其他檔案(也為下面
自定義404頁面
創造可能)。
感謝:Yavin
自定義404頁面
主題可配置項不多(僅支援
404頁面
),但你可以按照本教程讓你的部落格
修改背景圖檔
當然你可以去修改
擁有喜歡的404頁面
檔案,但我實在是不想動
404的pug
(主要是怕
源代碼
,然後gg)
部落格報錯
先上gif,看看我的404頁面:
404頁面代碼來自CodePen,感謝!
其實很簡單,大緻思路是建立
page頁面
->
禁止渲染
該頁面 -> 修改
json.now
檔案。
建立page頁面
怎麼建立應該都會吧,這裡以404為例:
hexo new page 404
别擔心這個
404
會渲染出
404.html
然後與原有的
404.html
沖突,因為page頁渲染出來的是
/404/index.html
建立後的檔案:
禁止渲染
為什麼要禁止渲染?如果不禁止會像其他頁面那樣被加上頂部圖、頁腳…
主要有兩種方法,想具體學習的可以看這篇文章,本篇教程指介紹一種我認為簡單的:
- index.md中添加:
layout: false
- 插入html代碼時,使用标簽:
{% raw %} ... html ... {% endraw %}
例如:
如果喜歡我的404頁面,可以使用下面的代碼(太長了,使用PasteMe平台):
點選檢視代碼,點選該位置可以
直接複制
哦:
說起PasteMe,又讓我想起來iamzxf,還是很感謝他…
修改 now.json
檔案
now.json
來到了最後一步,離成功又近了一步。
将原
now.json
檔案中的:
修改為:
至于為什麼這樣修改,應該很好了解,不多解釋了。
不足之處,歡迎留言,評論會及時回複,錯誤會及時更正!
創作不易,感謝支援!
最後的最後,歡迎通路我的個人部落格XJHui’s Blog。