WordPress記事のパーマリンク変更と301リダイレクトの一括設定

デフォル設定のままだったパーマリンク設定を変更し、それに伴ってURL転送(301リダイレクト)設定を行ったので覚書。

パーマリンクから投稿年月日を削除

WordPressでは、各記事のアドレスを

管理画面の設定→パーマリンク設定

で一括変更できる。

従来は日付と投稿名

skmzlog.com/2021/1/1/hoge/

だったのを
投稿名のみにして、以下のような形式に変更する。

skmzlog.com/hoge/

投稿年月日をURLに入れる意味はないし、こちらのほうがアドレスがシンプルになって良い。

301リダイレクト設定

このままだと各記事のURLがリンク切れになってしまうほか、Googleのページ評価もゼロから再スタートになってしまうので、
旧URLから新URLへの転送設定を行う。

設定ファイルに手作業で書き込む方法もあるけど、今回はなんせ数が多いのでプラグインを使って一括で変更する。

まずはRedirectionというプラグインを導入。

管理画面のプラグイン追加から検索してインストールできる。

インストールと有効化を行ったら

ツール→Redirection

で設定画面へ。

今回は正規表現を使って対象記事のURLを一括で転送するため

転送ルール→新しい転送ルールを追加

URLは以下のように変わるので

日付と投稿名 /2021/1/1/hoge/ → 投稿名のみ /hoge/

「/数字/数字/数字/文字列/」を抽出して「/文字列/」に置換するような処理を行えればOK。

ソースURL欄右側のプルダウンから正規表現を有効にして

ソースURL: ^\/\d\/\d\/\d\/(.)\/

ターゲットURL: /$1/

を入れる。

保存したら301リダイレクト設定が有効化される。

パーマリンクの変更からリダイレクト設定までの間はリンク切れを起こすので注意。

弊害

今回、カテゴリ(/category1/)やタグ(/tag/hoge/)のURLに変更はないが、
リダイレクト設定ではURL内の

/数字/数字/数字/

という文字列を消して転送を行う処理を行っているので、
本来存在しない

/2000/1/1/category1/

といったアドレスを入力しても

/category1/

に転送される。

まぁ、弊害っていうほどのものではないのだけれど。