@Mori2ndです。先日ブログを移転したのを機に、思い切ってパーマリンクも変更しました。
古いパーマリンクへアクセスがあっても、新しいパーマリンクのURLへ301リダイレクトできるよう、プラグインを使って対応しましたのでご紹介します!
パーマリンク変更後に新しいURLへ301リダイレクト
プラグインをインストール
導入したプラグインは「Permalink Redirect」です。
利用するには下記サイトからダウンロードします。
Permalink Redirect WordPress Plugin | Scott Yang’s Playground
PHP版とそれを圧縮ファイルにしたZIP版がありますので、お好みの方で。
ちなみに私はZIP版にしました。(ZIP版の場合は後でファイルを解凍してください。)
続いてダウンロードしたファイル「ylsy_permalink_redirect.php」をプラグインフォルダにアップロードしましょう。(例:/wp-content/plugins/)
アップロードできたらプラグインを有効化します。インストール自体はこれで終了です。
301リダイレクトするにはコードの変更が必要
デフォルトでは『302』リダイレクトになっていて、一般的には一時的な転送のために使うものです。
パーマリンクのように恒久的に変わらないようなものに対しては『301』リダイレクトがいいですね。
▼リダイレクトについてはこちらの記事が参考になりました。
301リダイレクトするために変更が必要なのは405行目の部分。以下のコードがある部分を探してください。
405 406 407 | if (!function_exists('wp_redirect')) { function wp_redirect($location, $status=302) { global $is_IIS; |
▼ここの『302』になっているところを『301』に変更します。
406 | function wp_redirect($location, $status=302) { |
▼参考に変更後のコードを載せておきますね。
406 | function wp_redirect($location, $status=301) { |
管理画面からリダイレクトの設定をする
続いてWordPressの管理画面で古いパーマリンクから新しいパーマリンクへ転送するための設定をします。
設定メニューから「Permalink Redirect」を選択。
以下の画面にある「Old Permalink Structures」に古いパーマリンク構造を入力して更新したらOKです。

「Current permalink structure」には新しく設定した現在のパーマリンクが表示されていますので確認しておきましょう。
その他の設定
「Paths to be skipped」
設定したものはリダイレクトさせません。
「Path pairs redirect from and to」
指定の書式で入力すると個別にリダイレクトできます。
例えば、AからBへリダイレクトしたい場合は
[AのURL]半角スペース[BのURL]
といった感じです。
プラグインの設定はこちらを参考にさせていただきました。ありがとうございました。
- 【参考】パーマリンク変更後に新URLにリダイレクトしてくれる!「Permalink Redirect」 | hislab
- 【参考】パーマリンクの変更後、旧アドレスでもアクセスできるWordPressのプラグイン | コリス
あとがき
おかげさまでずっとやりたかったパーマリンクの変更をして、今までのアドレスから新しいアドレスへの転送もうまくいっています!
同じようにパーマリンクの変更を検討している方の参考になるとうれしいですね!