
【プラグインなし】WordPressで特定のページをリダイレクトする方法
任意のページをリダイレクトする方法としては.htaccessの編集が一般的ですが、.htaccessってちょっと間違えるとサイト全体に不具合が起きたりするので、慣れてないと書き換えるのが怖いですよね。
ところがWordPressであれば、専用の関数を利用することで.htaccessを触らずにリダイレクトさせることができます。
この記事で分かること
- WordPressのfunctions.phpでリダイレクトを設定する方法
この記事の著者
- フリーランス
- Webデザイナー兼UI/UXデザイナー
リダイレクトはfunctions.phpで設定できます
WordPressには、リダイレクト用の関数がちゃんと用意されています。
・他サイトへリダイレクトする場合:wp_redirect()
・同じサイト内でリダイレクトする場合:wp_safe_redirect()
functions.php内でこれらの関数を使えば、自分の好きなページを簡単にリダイレクトさせことができます。
wp_redirect():他サイトへのリダイレクト
サンプル
以下は「https://sakana.com/maguro/」から「https://fish.com/tuna/」にリダイレクトさせる例です。
add_action('get_header', 'redirectFunc');
function redirectFunc(){
// ページのURLを取得
$url = $_SERVER['REQUEST_URI'];
// URLに「maguro」が入っていたら「https://fish.com/tuna/」にリダイレクトする
if(strstr($url, 'maguro')){
wp_redirect('https://fish.com/tuna/', 301);
exit;
}
}
コードの内容は以下の通りです。
1.任意のページが表示されると、redirectFunc()関数を実行。
2.redirectFunc()関数内で、ページのURLを調べる。
3.URLに文字列「maguro」が入っている場合は「https://fish.com/tuna/」にリダイレクトする。
301リダイレクトでも302リダイレクトでもOK
コード内の「301」という表記は、301リダイレクトの場合の設定です。
「301」を省略すると、302リダイレクトとして処理されます。
// 302ダイレクトにする例
if(strstr($url, 'maguro')){
wp_redirect('https://fish.com/tuna/');
exit;
}
wp_safe_redirect():同じサイト内でのリダイレクト
サンプル
「https://sakana.com/iwashi/」から「https://sakana.com/sanma/」にリダイレクトさせる例です。
add_action('get_header', 'redirectFunc');
function redirectFunc(){
// ページのURLを取得
$url = $_SERVER['REQUEST_URI'];
// URLに「iwashi」が入っていたら「https://sakana.com/sanma/」にリダイレクトする
if(strstr($url, 'iwashi')){
wp_safe_redirect('https://sakana.com/sanma/', 301);
exit;
}
}
301リダイレクト / 302リダイレクトの設定は、wp_redirect()関数と同様の考え方です。
301リダイレクトと302リダイレクトの違い:SEOへの影響は?
・301リダイレクト:ページを完全にお引越しして、URLを変更する場合に利用。
・302リダイレクト:諸事情で、ページのURLを一時的に変更する場合に利用。
どちらを用いても、
・ユーザーから見た挙動は同じです(ただページが切り替わるだけ)
・変更前のURLが受けていたGoogleによるページ評価を新しいURLへ引き継ぐことができます。SEO対策として有効です。
また、GoogleがURL移転をより早く認識してくれるのは301の方とされています。
例えばページAから無関係のページBへ、ユーザーを強制誘導するような用途で使ってしまうと、サイト評価に悪影響が出る可能性があるので注意が必要です。