URLを変更した、古いページを別の場所に統合した——といった場合に特定のページだけをリダイレクトしたい場面があります。この記事では、プラグイン・.htaccess・functions.php の3つの方法を、安全な実装の書き方とあわせて解説します。
この記事でわかること
- プラグイン(Redirection)を使った設定不要の方法
.htaccessでの設定(Cocoonの自動書き換え領域の注意)wp_safe_redirect()とhome_url()を使った安全なコード実装
プラグインを使用する方法
コードを書かずに設定したい場合は「Redirection」プラグインが便利です。
- 管理画面の「プラグイン」→「新規追加」から「Redirection」を検索してインストール・有効化する
- 「設定」→「Redirection」を開く
- 「追加のリダイレクト」欄に元のURLと転送先のURLを入力して追加する
.htaccess ファイルを編集する方法
Apacheサーバーであれば、.htaccess に直接ルールを追加できます。編集前は必ずバックアップを取ってください。
.htaccess:特定ページのリダイレクト
Redirect 301 /old-page/ https://example.com/new-page/
WordPressの自動生成ブロックの外に書く
WordPress(Cocoon)は
WordPress(Cocoon)は
.htaccess の # BEGIN WordPress 〜 # END WordPress の間を自動で書き換えることがあります。このブロックの内側にカスタムルールを書くと、パーマリンク設定の保存時などに消えてしまうため、必ずブロックの外(上か下)に追加してください。Nginxサーバーでは .htaccess は使えないため、サーバー設定側での対応が必要です。functions.php ファイルを編集する方法
特定のページ(固定ページ)だけをコードでリダイレクトするには、template_redirect フックを使います。同一サイト内への遷移なら、home_url() + wp_safe_redirect() を使うのが安全です。
functions.php:同一サイト内へリダイレクト(推奨)
add_action('template_redirect', function () {
if (is_page('old-page-slug')) {
wp_safe_redirect(home_url('/new-page/'), 301);
exit;
}
});
外部サイトへ転送したい場合は
転送先が他のドメイン(外部サイト)の場合は、絶対URLを指定して
転送先が他のドメイン(外部サイト)の場合は、絶対URLを指定して
wp_redirect() を使います。wp_safe_redirect() は既定で自サイト以外のURLを許可しないため、意図的に外部へ転送する場合は wp_redirect() を選びます(第2引数のホワイトリストで許可ドメインを追加することも可能です)。functions.php:外部サイトへリダイレクトする場合
add_action('template_redirect', function () {
if (is_page('old-page-slug')) {
wp_redirect('https://example.com/new-page/', 301);
exit;
}
});
関連するリダイレクトの実装
よくある質問(FAQ)
QPHPからリダイレクトする最良の方法は?
A同一サイト内なら
wp_safe_redirect(home_url('/path/'), 301)、外部サイトへの転送なら wp_redirect($url, $status) を使います。301(恒久的)または302(一時的)のステータスコードを指定し、呼び出し直後に必ず exit; を書いてください。Q特定のユーザーロールを特定のページにリダイレクトするには?
A
wp_get_current_user() でユーザー情報を取得し、current_user_can() でロールを確認したうえで wp_safe_redirect() を実行します。ログイン直後のリダイレクトは login_redirect フィルターフックを使うのがベストプラクティスです(ログイン後のリダイレクト先を変える方法)。Qtemplate_redirect アクションフックと wp_redirect の使い分けは?
A
template_redirect はテンプレートが読み込まれる直前に発火するアクションフックで、「条件に応じてリダイレクトすべきか判定する」場所として使います。wp_redirect() / wp_safe_redirect() は、その条件が満たされたときに実際に転送を実行する関数です。まとめ
- コード不要:Redirectionプラグイン
- サーバー設定:
.htaccess(Cocoonの自動生成ブロック外に書く) - コードで実装:
template_redirect+ 同一サイト内はwp_safe_redirect(home_url(...))、外部サイトはwp_redirect()
技術レベルや要件に応じて方法を選び、コードで実装する場合はwp_safe_redirect() を基本にすると安全です。

