kzlog

日記

WordPress記事のパーマリンク設定を変更して一括301リダイレクトしたんだけど大失敗だった

このブログはパーマリンク設定を、

https://tmrkzr.com/gadget/9862/

という形で運用してきましたが、思うところあってこれを、

https://tmrkzr.com/9862/

に変更したら大失敗だった、ということをまとめます。

記事URLを「4桁の数字だけ」にしたらダメなんですよ……!

記事のURLを「カテゴリ/記事ID」から「記事ID」のみに変更した

パーマリンク設定を変更しようと思ったきっかけは、記事カテゴリを後から変えることがあるから。

最初からきっちり設計するサイトならまだしも、今後どんな記事書くかわからない個人の雑記ブログだと、しょっちゅう記事のカテゴリを変えたくなるのです。

しかし、パーマリンク設定を、「カテゴリ/記事ID」にしているので、カテゴリを変えると記事URLまで変わってしまい、その度に301リダイレクトするわけですが、それも面倒。そこで、パーマリンク設定を変えてしまうことにしました。

まずは、後で一括してリダイレクトを設定するため、プラグイン「Export All URLs」で現在の記事のURL一覧をcsvで取得します。

次に、WordPress管理画面の設定>パーマリンク設定から「カスタム構造」を選択。空欄に

/%post_id%/

を入力。「変更を保存」すれば全ての記事URLが変更されます。

ここで「投稿名」を選べば、自分で記述したスラッグを記事のURLとすることができます。SEO的にも有利、という話もあります。

しかし個人の雑記ブログで今さらSEOもないしなあ。そもそもスラッグを手作業で書いていくのは手間かかりすぎ。

というわけで妥協してシステムが自動的につけてくれるIDにした次第。しかしこれが大失敗の元だった……

プラグインで一括リダイレクト完了

このままだとリンクが全部切れてしまうので、301リダイレクトを設定します。

Export All URLsで新たなURLのcsvを取得し、旧URLの隣の列にコピペ。

一列目を「source」「target」とし、ドメインを検索置換で削除すれば新旧の相対URL一覧が出来上がり。

プラグイン「Redirection」でこのcsvをインポートして、全ての記事の301リダイレクトが完了しました。

「記事URLが4桁の数字のみ」をやってはいけない

ところで、システムが自動的につけてくれるIDは4桁の数字です。つまり9999通りで、記事数が9999を超えるとどうなるのかな、という興味が湧き、ググってみたらあら大変。パーマリンクを記事IDだけにしてはダメ、なのでした。

なぜかというと、システムが使う年月アーカイブが4桁の数字なので、かぶってしまうから。

カテゴリ名+記事IDに設定しなおした

というわけで、パーマリンク設定を、

%category%%post_id%

としました。旧URLが、

https://tmrkzr.com/gadget/9862/

だとすると、

https://tmrkzr.com/gadget9862/

となるわけですね。

再度csvを作成し、インポートして一件落着。