公開済みのWordPress記事でURL(パーマリンク)を変更すると、古いURLを保存している読者や検索エンジンがページへ到達できなくなります。恒久的な移動では、古いURLから新しいURLへ301リダイレクトを設定します。
リダイレクトだけでなく、内部リンク、サイトマップ、canonical URLも新しいURLへ統一することが大切です。
パーマリンクは原則として変更しない
パーマリンクは、記事や固定ページを識別する恒久的なURLです。公開後の変更は、外部リンク、SNSの共有、ブックマーク、アクセス解析などに影響します。誤字、サイト構造の整理、ドメイン移転など明確な理由がある場合だけ変更しましょう。
301と302の違い
| ステータス | 意味 | 用途 |
|---|---|---|
| 301・308 | 恒久的な移動 | 記事URL、パーマリンク、ドメインを今後戻さない変更 |
| 302・307 | 一時的な移動 | メンテナンスや期間限定ページなど、元へ戻す変更 |
記事を新しいURLへ完全に移した場合は、通常301を使います。Googleは恒久的なサーバー側リダイレクトとして301または308を推奨しています。
変更前に旧URLと新URLの対応表を作る
作業前に、旧URLと対応する新URLを一対一で記録します。記事数が多い場合は表計算ファイルで管理すると、設定漏れや転送先の間違いを防げます。
| 旧URL | 新URL | 確認結果 |
|---|---|---|
| https://example.com/old-page/ | https://example.com/new-page/ | 301→200 |
- WordPressとデータベースをバックアップする
- 旧URLをアクセス解析、サイトマップ、Search Consoleなどから収集する
- 各旧URLに内容が対応する新URLを割り当てる
- テスト環境があれば先に動作確認する
WordPressの自動転送だけに頼らない
WordPressが古い投稿スラッグを記録し、新しいURLを推測して転送する場合はあります。しかし、パーマリンク構造、カテゴリー、カスタム投稿タイプ、テーマ、プラグインなどの条件により動作は変わります。
カテゴリーや投稿スラッグの変更であっても「設定不要」と決めつけず、旧URLへアクセスしてHTTPステータスと転送先を確認してください。重要なURLは明示的な301リダイレクトを設定する方が確実です。
リダイレクト方法の選び方
| 方法 | 向いているケース | 注意点 |
|---|---|---|
| レンタルサーバーの転送機能 | 管理画面に機能がある | 仕様と対象範囲を確認する |
| Webサーバー設定 | サーバーを管理できる、処理を軽くしたい | 記述ミスでサイト全体へ影響する |
| Redirectionプラグイン | サーバー設定が難しい、多数の転送を画面で管理したい | プラグインの保守とログ容量が必要 |
少数の転送でサーバー設定を安全に管理できるなら、専用プラグインを増やさずサーバー側で処理できます。サーバーへ触れない場合や、担当者が管理画面で更新する場合はプラグインが便利です。
Redirectionプラグインで設定する
「Redirection」は、WordPress管理画面で301転送や404記録を管理できるプラグインです。導入する場合は、WordPress公式ディレクトリから提供元、更新日、対応バージョンを確認します。
- 管理画面の「プラグイン」→「新規プラグインを追加」を開きます。
- 「Redirection」を検索し、提供元を確認してインストール・有効化します。
- 「ツール」→「Redirection」を開き、初期設定を完了します。
- 新しい転送ルールで、ソースURLに旧URLのパスを入力します。
- ターゲットURLに新しいURLを入力します。
- 単純な一対一転送では正規表現をオフのままにします。
- HTTPコードが301になっていることを確認して保存します。
たとえば旧URLがhttps://example.com/old-page/なら、ソースURLは通常/old-page/です。転送先にはhttps://example.com/new-page/を指定します。
アクセスログや404ログは調査に便利ですが、保存期間を長くするとデータベースが大きくなる可能性があります。必要な期間だけ記録し、IPアドレスなど個人情報に関わる設定も確認してください。
Apacheの.htaccessで設定する
Apacheまたは互換サーバーで.htaccessが利用できる場合は、サーバー側で転送できます。編集前にファイルをバックアップし、WordPressが自動生成する# BEGIN WordPressから# END WordPressの外側へ追記します。
次は、旧ページを新ページへ恒久転送する例です。
Redirect 301 /old-page/ https://example.com/new-page/
保存直後に旧URLと管理画面を確認し、500エラーや転送ループが発生した場合は変更を戻します。Nginxなど.htaccessを使わないサーバーでは、この方法は利用できません。サーバー管理者または契約先の案内に従ってください。
設定後に確認すること
- 旧URLが301を返している
- Locationヘッダーが正しい新URLになっている
- 新URLが200で正常表示される
- リダイレクトループがない
- 旧URL→別URL→新URLという連鎖がなく、最終URLへ直接転送される
- パソコンとスマートフォンの両方で確認できる
ブラウザは301を記憶することがあります。シークレットウインドウだけでなく、開発者ツール、リダイレクト確認機能、次のコマンドなどでHTTPレスポンスを確認します。
curl -I https://example.com/old-page/
URL変更後に更新する場所
- 記事本文、メニュー、関連記事などの内部リンク
- canonical URL
- XMLサイトマップ
- 構造化データ
- 広告、SNSプロフィール、メール署名など自分で管理できる外部リンク
- Search ConsoleのURL検査とサイトマップ
内部リンクを古いURLのまま残すと、表示のたびに余計な転送が発生します。自分で変更できるリンクは新URLへ直接更新してください。
ドメイン変更では追加作業が必要
ドメインやサブドメインを変更する場合は、全URLの対応表、サイト全体のリダイレクト、内部リンク、canonical、サイトマップを更新します。Google Search Consoleでは新旧両方のサイトを確認し、ドメイン変更では必要に応じて「アドレス変更」も利用します。
Googleは、移転用の恒久リダイレクトを少なくとも1年間、利用者のためには可能な限り長く維持するよう案内しています。
避けるべき設定
- 削除した無関係なページをすべてトップページへ転送する
- 一つの旧URLに複数の転送ルールを設定する
- 旧URLから何段階も経由して転送する
- 正規表現の意味を理解せず有効にする
- 新URLから旧URLへ戻るルールを作り、ループさせる
- 動作確認前に旧コンテンツや旧ドメインを停止する
移転先として適切なページがない場合は、無理にトップページへ転送せず、正しい404または410を返す方が利用者と検索エンジンに状況を伝えやすくなります。
まとめ
公開済みURLを恒久的に変更したら、旧URLから対応する新URLへ301リダイレクトを設定します。設定後は301→最終URLの200を確認し、内部リンク、canonical、サイトマップも新URLへ更新してください。WordPressの自動転送だけに頼らず、旧URLごとに動作確認することが重要です。
