HEXOのURLが大文字小文字の混在している場合にアクセスできない時の対処方法

URLに大文字が含まれているとページが 404 not found になってアクセスできなかったので修正しました。

URLのファイル名が大文字になっているとアクセスできない

URLが大文字になってるとテスト環境ではアクセスできるのに本番環境ではアクセスできないことを実際にクリックしてやっと気づきました。
テスト環境はWindows上で動かしているので、URLが大文字小文字どちらであっても区別なくアクセスできるのですが、UNIXだと区別されますね。
で、どうするかというと、HEXO自体に設定項目がありました。

_config.yml
1
2
3
# Writing
...
filename_case: 1

これでファイル名は小文字に変更されます。


で、これだけでは解決しきれなかったので、続きます!

タグ名が大文字になったまま

再構築してもタグのディレクトリ名が大文字を含むまま変更されていなかったので調べてみると、先ほどの設定ではファイル名のみの変更でタグには適用されないとのこと。

tags and categories are case sensitive #3875
https://github.com/hexojs/hexo/issues/3875


プラグインの導入

hexo-easy-tags-plugin というプラグインを入れると良いとのこと。

hexo-easy-tags-plugin GitHub
https://github.com/dailyrandomphoto/hexo-easy-tags-plugin

インストール

bash
1
$ npm install hexo-easy-tags-plugin

_config.yml に追記。

_config.yml
1
2
3
#hexo-easy-tags-plugin
easy_tags_plugin:
enable: true
bash
1
hexo d -g

直らない。orz
いっかい全部綺麗さっぱりにしてみます。そして再構築。(READMEにちゃんと書いてありました。ちゃんと読もう。)

bash
1
hexo clean && hexo g

無事、タグのディレクトリ名が小文字に統一されてアクセスできるようになりました。


他のオプションは以下の通り。

_config.yml
1
2
3
4
5
6
#hexo-easy-tags-plugin
easy_tags_plugin:
enable: true
tag_name_case: 1
sort_ignore_case: true
action: report

enable プラグインを有効化するかどうか。(既定値: true)
tag_name_case タグの文字を大文字にするか小文字にするか、もしくは変換しないか。(既定値: 0)
0 無変換 / 1 小文字 / 2 大文字
sort_ignore_case ソート時にタグの大文字小文字を無視する。(既定値: true) list_tags()およびtagcloud()において処理を助ける。
action report を指定すると、タグの競合がないかのレポートを出力して終了する。(既定値: correct)


設置しておけば、以前に設定したタグに合わせて書き換えてくれているようです。
:D


HEXOのURLが大文字小文字の混在している場合にアクセスできない時の対処方法

https://fennote.fareastnoise.com/2022/04/07/hexo-filename-case/

Author

FEN

Posted on

2022-04-07

Updated on

2023-09-24

Licensed under

コメント