0%

Hexo 檔案名稱 Url 優化(三)

此篇介紹如何變更新增文章名稱帶入的參數以及對於 url 的優化。

建議此篇內容越早更改設定越好!
不然文章一多起來也懶得調整前面的文章 QQ

範例的環境版本

hexo 版本:6.0.1
hexo-cli 版本:4.3.0
next 版本:7.8.0

修改文章名稱參數

預設名稱會帶入 title 參數,如果文章多起來檔名只有 title 的話,要對文章做一些管理或分類都很難下手,因此因要修改檔名參數來解決這個問題,下方示範在檔名參數添加日期。

結果圖

Step1:進入根目錄 _config.yml 搜尋 #Writing

Step2:修改參數 new_post_name

官方文件提供的參數

  • :title:標題
  • :year:建立年份(4 位數)
  • :month:建立月份(2 位數)
  • :i_month:建立月份(去掉開頭的零)
  • :day:建立日期(2 位數)
  • :i_day:建立日期(去掉開頭的零)
_config.yml
1
2
3
# Writing
- new_post_name: :title.md # File name of new posts
+ new_post_name: :year-:month-:day-:title.md

Url 優化

預設路徑格式為 年/月/日/名稱,如果是英文的話倒還好中文其實會很醜,且有空格的話會有用 破折號 - 替代,因此下方會介紹如何優化這個醜醜的 url。

比較圖

Step1:安裝 abbrlink 套件

npm install hexo-abbrlink --save

Step2:進入根目錄 _config.yml 搜尋 #URL
Step3:修改參數 permalink

之後只要 hexo s 就會自動幫我們在文章 front-matter 中添加 abbrlink 參數並帶上一串英文作為值,這串英文就可以做為 permalink 參數,詳細參數設置可以參考官方文件

_config.yml
1
2
3
4
5
6
# Writing
# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: https://kentdoit.github.io/
- permalink: :year/:month/:day/:title/
+ permalink: :category/:year:month:day/:abbrlink/

Step4:檔案底部添加新參數

_config.yml
1
2
3
4
# abbrlink config
abbrlink:
alg: crc32 # 演算法:crc16(default) and crc32
rep: dec # 進位制:dec(default) and hex

Step5:優化 Category & Tag

  • 可以在 _config.yml 中對 Category、Tag 設置對應轉換的字串。
  • 分別在 category_map、tag_map 參數中設置轉換字串。(請參考下方範例)

    這樣在 url 中使用 category 就可轉換為自己想要的字串。(例如:Hexo ➞ hexo)

_config.yml
1
2
3
4
5
# Category & Tag
category_map:
Hexo: hexo
tag_map:
Hexo 部落格: hexo blog

有了這招就算 permalink 中的 title 參數有中文也可以透過轉換變為英文,另外在記錄一個可以將中文轉英文的方法。(p.s. 我自己沒有嘗試過所以不確定可不可行)

_config.ymlsrc
1
2
3
4
5
# Directory
- source_dir: source
+ source_dir: source-en
- public_dir: public
+ public_dir: public-en

到這邊部署後有可能會出現 404 畫面,我這邊的問題是因為 路徑大小 寫造成的。

路徑比較圖

原因:git 命令默認會忽略文件名稱的大小寫,因此大小寫發生變化會被忽略也導致沒有更新。
解法:修改 git ignorecase 參數。

Step1:進到根目錄 deploy_git 資料夾

cd .deploy_git

Step2:編輯 git 設定檔

vim .git/config

Step3:修改 ignorecase 參數為 false(要先按小寫 i 才能修改)

.git/config
1
2
+ ignorecase = false
- ignorecase = true

Step4:修改完後儲存並離開檔案,先按 Esc 後直接輸入以下指令

:wq

Step5:接下來的三個指令是為了更新 server 上的檔案(先刪除在新增)

git rm -rf *
git commit -m 'clean all file'
git push

Step6:接下來指令是回到根目錄並清除快取檔案 (db.json) 和已產生的靜態檔案 (public),最後就是重新部署

cd ..
hexo clean
hexo g -d

reference

Hexo部署到Github后文件夹名大小写引起的问题
Hexo Url優化(SEO)