はじめに
WordPressのサイトを運営していると、特定のページやURLを404エラーページにリダイレクトしたい場面が出てくることがあります。例えば、古いコンテンツや無効なページへのアクセスを防ぎたい場合や、セキュリティの観点から特定のページを隠したい場合です。本記事では、実際のコード例を用いながら、特定のURLを404エラーページにリダイレクトする方法を詳しく解説します。
コードの概要説明
まず、今回使用するコード全体を以下に示します。
add_action('template_redirect', 'redirect_multiple_pages_to_404');
function redirect_multiple_pages_to_404() {
// ユーザーがログインしている場合はリダイレクトしない
if (is_user_logged_in()) {
return;
}
$urls_to_404 = array(
'service/unavailable-feature/a12',
'page/old-event/a34',
'blog/outdated-post/a56',
'product/discontinued-item/a78',
// 他のリダイレクトしたいURLを追加
);
$current_url = untrailingslashit($_SERVER['REQUEST_URI']); // 現在のURLを取得し末尾のスラッシュを削除
foreach ($urls_to_404 as $url) {
if (strpos($current_url, $url) !== false) {
global $wp_query;
$wp_query->set_404();
status_header(404);
get_template_part(404); // 404テンプレートを表示
exit();
}
}
}
このコードは、特定のURLにアクセスがあった場合にそのページを404エラーページにリダイレクトするものです。以下で各部分の詳細を解説していきます。
詳細なコード解説
add_action
とtemplate_redirect
の説明
add_action('template_redirect', 'redirect_multiple_pages_to_404');
この行は、WordPressのtemplate_redirect
アクションにredirect_multiple_pages_to_404
関数をフックしています。template_redirect
は、テンプレートファイルが読み込まれる直前に実行されるアクションで、このタイミングでリダイレクトのロジックを実行することで、不要なページへのアクセスを防ぎます。
is_user_logged_in
でのログイン状態の確認
if (is_user_logged_in()) {
return;
}
この部分は、ユーザーがログインしている場合にはリダイレクトを行わないようにしています。サイト管理者や特定のユーザーがアクセスできるようにしたい場合に役立ちます。
$_SERVER['REQUEST_URI']
での現在のURLの取得
$current_url = untrailingslashit($_SERVER['REQUEST_URI']);
ここでは、現在のURLを取得し、末尾のスラッシュを削除しています。untrailingslashit
関数は、URLの末尾にスラッシュがある場合にそれを取り除くために使用します。
URLを配列で管理する方法
$urls_to_404 = array(
'service/unavailable-feature/a12',
'page/old-event/a34',
'blog/outdated-post/a56',
'product/discontinued-item/a78',
// 他のリダイレクトしたいURLを追加
);
ここでは、リダイレクトしたいURLを配列として管理しています。この配列に新しいURLを追加することで、リダイレクト対象を簡単に増やすことができます。
404エラーページへのリダイレクトの仕組み
foreach ($urls_to_404 as $url) {
if (strpos($current_url, $url) !== false) {
global $wp_query;
$wp_query->set_404();
status_header(404);
get_template_part(404);
exit();
}
}
この部分では、現在のURLが配列内のいずれかのURLを含む場合に、404エラーページを表示するようにしています。strpos
関数を使ってURLの一部が一致するかどうかを確認し、一致する場合には$wp_query
オブジェクトを使って404ステータスを設定し、404テンプレートを表示します。
応用例と注意点
他のリダイレクトしたいURLを追加する方法
新しいURLをリダイレクト対象に追加するには、$urls_to_404
配列にそのURLを追加するだけです。例えば、'promo/expired-deal/a99'
というURLを追加する場合は以下のようにします。
$urls_to_404 = array(
'service/unavailable-feature/a12',
'page/old-event/a34',
'blog/outdated-post/a56',
'product/discontinued-item/a78',
'promo/expired-deal/a99', // 新しいURLを追加
);
セキュリティ対策としての利用方法
この方法は、特定のページへのアクセスを制限するために非常に有効です。例えば、管理者のみがアクセスできるページを誤って一般公開しないようにする場合などに使用できます。
SEOの観点からの考慮点
SEOの観点から見ると、404エラーページへのリダイレクトは慎重に行う必要があります。無効なページを削除することで検索エンジンの評価が下がるのを防ぐことができますが、適切にリダイレクトすることも重要です。場合によっては、301リダイレクトを使用して、関連する新しいページに誘導する方が良い場合もあります。
まとめ
この記事では、特定のURLを404エラーページにリダイレクトする方法について、具体的なコード例を用いて解説しました。この方法を用いることで、不要なページへのアクセスを防ぎ、サイトのセキュリティやSEOの最適化を図ることができます。実際のサイトでこのコードを応用し、より効果的なWebサイト運営を目指してみてください。
最後のアドバイス
このコードを実装する際には、必ずテスト環境で動作確認を行い、本番環境に影響が出ないように注意してください。また、サイトのバックアップを取っておくことも忘れずに。特定のページをリダイレクトすることで、サイト運営の効率化とセキュリティの強化が実現できます。ぜひ試してみてください。