Amazonで商品を見る セール会場へ

WordPress│Redirectionを使ったリダイレクト設定まとめ

RedirectionでURLを転送するときは、旧URLと新URLの対応を先に決め、限定したルールから確認します。

記事の評価や順位の維持を保証する設定ではありません。

旧記事の全URLを巻き込む.htaccess例と、カテゴリーの先頭要素から移転先を推測するCSV生成コードは撤回しました。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

1件の転送を登録する

転送元は通常、ドメインを含まないパスです。

たとえば https://example.com/old-post/ から /new-post/ へ移すなら、転送元を /old-post/、転送先を /new-post/ とし、正規表現を無効にします。

WordPressがサブディレクトリにある場合も、実際のリクエストパスとの一致を確認してください。

恒久移転は301、一時的な転送は302など、意図に合わせます。

先に検証環境で確認し、本番では既存ルールをエクスポートしてから追加します。

末尾スラッシュ、大文字小文字、クエリーパラメーターの扱いもルールの条件です。

既存設定を退避するときは、JSON形式で復元に必要なデータを選び、書き出したファイルを保存します。

以下の4列CSVは転送ルールの入力例であり、グループや設定などを含む全データのバックアップではありません。

CSVは確認済みの対応表から作る

次は説明用の2行です。

ヘッダー行を付けず、各行を「転送元,転送先,正規表現フラグ,HTTPコード」とします。

実際の旧URL・新URLへ置き換えてから、少数のルールで読み込み結果を確認してください。

/old-post/,/new-post/,0,301
/old-guide/,https://example.com/new-guide/,0,301

パーマリンク変更では、変更前の実URLと投稿IDを保存し、変更後の同じ投稿IDの実URLと照合します。

スラッグだけからURLを組み立てると、日付、階層、カテゴリーの選択、末尾スラッシュなどを取り違えます。

移転先が存在しない行や、転送元と同じ行は登録しません。

読み込み前に公式のインポート画面のプレビューで対象を確認し、既存ルールと同じ転送元が含まれていないか照合します。

重複チェックをしない設定では新規項目が追加され、「重複を無視」では該当項目を取り込まず、「重複を更新」では既存項目を書き換えるため、意図した処理を選んでください。

同じCSVの再取り込みでも既存ルールに影響する場合があるので、試験用に追加する行と既存ルールを更新する行を区別します。

正規表現は対象ディレクトリに限定する

たとえば旧ディレクトリ内の各パスを同じ構造の新ディレクトリへ移すなら、転送元 ^/old-section/(.*)$、転送先 /new-section/$1 とし、正規表現を有効にします。

この例は対応する新URLが存在することが前提です。

全URLを対象にする表現を管理画面の除外代わりに使わないでください。

CSVを読み込んだ後の確認順序

スクロールできます
確認する対象結果の判断
取り込んだ各行転送元・転送先・正規表現無効・301が対応表と一致する
同一サイトへの転送旧URLの最初の応答が301。転送先の実URLは200で、多段転送がない
外部サイトへの転送Locationが指定したHTTPS URLと一致する。転送先の存在は別途確認する
今回追加したルールの停止旧URLからの転送が止まる。旧ページの200/404は停止とは別に確認する

隔離環境では説明用2行のURLを専用の試験パスへ置き換え、上の条件を実HTTPで確認しました。

外部転送先には自動でアクセスせず、Locationの比較までを検証範囲としています。

Locationは同一サイトの相対URLで返ることもあります。

相対URLなら旧URLを基準に解決して比較します。

転送先は実際のパーマリンクを使い、固定ページに投稿用の?p=IDを流用して追加の正規URL転送を発生させないようにします。

転送先・対象外・ループを確認する

登録後は旧URLの最初の応答が意図したステータスとLocationになり、新URLが正常表示されることを確認します。

転送の多段化、自己転送、存在しないページへの集約も確認してください。

ログイン、管理画面、REST API、画像URLなど、対象外URLが巻き込まれていないことも調べます。

curl -I 'https://example.com/old-post/'
curl -IL --max-redirs 5 'https://example.com/old-post/'

curlの例はヘッダー確認用です。

HEADとGETで応答が異なる環境では、ブラウザでも確認します。

問題があれば今回追加したルールだけを停止し、保存した設定と比較します。

301はブラウザ等にキャッシュされる場合があるため、ルールを戻しただけで全利用者のキャッシュが即時消えるとは限りません。

取り込みで既存ルールを更新した場合は、そのルールを停止するだけでは変更前の転送先や条件に戻りません。

退避した設定と照合し、変更した既存ルールを元の内容へ戻したうえで、旧URLの応答を確認してください。

プラグインが動作する前にWebサーバーが処理する転送は、別途サーバー設定の確認が必要です。

Redirection 5.10.1の隔離環境で説明用CSVの形式を読み込み、転送と追加ルールの停止を確認しました。

本番サイトの転送設定やCSVインポートは実行していません。

管理画面でのインポート操作、重複時の更新・復元、利用者の実際の移転先は、この検証に含めていません。

参照:URLの照合条件、CSVの形式。

  • URLをコピーしました!

実装を任せたい方へ

WordPressのカスタマイズ代行

ブロックの追加、テーマの改修、管理画面の調整など、記事で紹介している内容の実装を承ります。1時間 ¥8,000〜(税込)。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次