このサイトはその昔手打ちで古いディレクトリ構成のサイト。今回は内容を変えてほぼリニューアルに近いので、今風のディレクトリ構成に変えました。

素人の知識で語りますが、古のディレクトリ構成の例。

http://サイト名/カテゴリ名/ファイル名.html/

対する今風のディレクトリ構成の例。

http://サイト名/post/ファイル名(拡張子なし)/

まあディレクトリ構成とかURLって、昔から「どうすればSEOに強いか」みたいな議論がいろいろありました(笑)。

静的サイトの場合SEOに強いかどうかは棚上げすれば、管理のしやすさは古のディレクトリ構成で、サイト構成の変更の容易さは今風のディレクトリ構成。

今風のディレクトリ構成の場合、ポスト直下に記事ファイルがずらっと並びます。最初はいいですが、数年もコツコツ記事を書き溜めていけば1000や2000など当たり前のように超えます。

その場合、記事の修正をするときに該当ファイルを探すのも大変。

人間にとっては、できれば最低でも年毎のディレクトリに分けて管理するのが楽。

けれども、カテゴリ毎とか年毎とかに細かく分けてしまうと、ディレクトリ構成を変える必要が出てきたときに困ります。主にカテゴリやタグの分類で、私のような整理整頓下手は増築を繰り返した家みたいなディレクトリ構成にしてしまうのです。

これを防ぐには、ルートディレクトリ直下に全記事ファイルをおけば、個別記事のURL変更はありえないので安心。でもルートディレクトリに個別記事フォルダを1000も2000も並べるのも…どうなの?とも思うわけで。

となると、ルートディレクトリ直下に個別記事用のフォルダを作って、そこに個別記事は全部放り込む。というのが整理整頓とカテゴリ変更に強いという理由で一番よさそうかなと思うのです。

hugoの場合、個別記事のmdファイル内に、記事のURLを設定することができます。ファイル名とは異なる名前、異なるディレクトリ構成が記述できるので、ファイルはディレクトリの階層構造に分けたまま、URLはフラットにするというのも可能なので、それで行くことにしました。

個別記事に記事のURLと、過去のURLからのリダイレクトを設定するにはFront Matter に以下の例のような記述を追加します。

URL: "/post/pc-20191202-kaikae1/"

aliases:

  - /PC/2019/20191202-pc-kaikae1/

「URL」の方が新しいURL。aliasesの方が過去のURL。これを設定しておけば、「aliases」に記述した過去URLの個別記事ファイルに、「URL」に設定した新URLへのリダイレクト設定を自動的に出力してくれます。

もちろん新記事を作るときは、「URL」だけ設定して「aliases」は書く必要はありません。

ちなみにリダイレクト設定の内容は、rel=canonicalと0秒refresh。

rel=canonicalと0秒リフレッシュはGoogleもあまりおすすめなかったし、W3Cも「このコンビを301リダイレクトの用途に使うたら、あきまへん。.htaccessから301させなはれ。」と非推奨だったかなあー?と思うので、訳アリじゃない人はaliases書かずに素直に.htaccessの301リダイレクト使った方が無難かとも思います。

まあ今回はページランク(まだあるんでしょうか?)とかSEOとか、あまり考える必要がないので、使ってみましたよ。

なお、URLを設定しておけば、自動で全部新しいURLに変更してくれるのですが、個別記事内に書いた内部リンクは自力で対応する必要があります。

私みたいに内部リンク使いまくってる人は、修正がめんどくさいので気を付けましょう。