WordPress小ネタ集①:404をnoindexに!テーマ更新に強いmu-plugin方式

パソコン

WordPressサイトを運営する上で、検索エンジンからの評価は非常に重要です。今回は「WordPress小ネタ集」の第一弾として、多くのサイトで軽視されがちな「404ページ」のSEO対策について深掘りします。具体的には、誤ってインデックスされることを防ぐために404ページをnoindex設定する方法と、その実装をテーマ更新の影響を受けずに安全に行う「mu-plugin」方式をご紹介します。

スポンサーリンク
スポンサーリンク

検索結果を最適化!WordPressの404ページをnoindex設定する

Webサイトを運用していると、リンク切れやURLの誤入力などによって、ユーザーが「404 Not Found」ページにたどり着くことがあります。この404ページ自体はサイトエラーを知らせるために必要なものですが、検索エンジンがこのページを通常のコンテンツとしてインデックスしてしまうと、品質の低いページとして評価され、サイト全体のSEOに悪影響を及ぼす可能性があります。

このような事態を避けるために、404ページには「noindex」というメタタグを設定することが推奨されます。noindexタグは、検索エンジンに対して「このページは検索結果に表示しないでください」と明示的に伝える役割を果たします。これにより、検索エンジンは404ページをインデックス対象から外し、サイトの評価を下げる要因となることを防ぎます。

加えて、noindexと同時に「follow」タグを設定することで、404はHTTPステータスだけでも原則インデックス対象外ですが、テーマや設定によっては“ソフト404(200で疑似404)”になるケースがあるため、noindexを保険として併用します。404ページ内に含まれるリンク(例えば、トップページへのリンクなど)はクロール対象とすることを検索エンジンに伝えることができます。これにより、ユーザーや検索エンジンがサイト内をスムーズに移動できるようになり、ユーザビリティとSEOの両面からサイトの健全性を保つことに繋がります。

テーマ更新に強い!「mu-plugin」方式で安全に実装する方法

WordPressで機能を追加する際、functions.phpに直接コードを記述する方法が一般的ですが、この方法はテーマの更新時に変更が上書きされてしまうリスクが伴います。特に、SEOに直結する重要な設定である404ページのnoindex化は、一度設定したら永続的に機能し続けるべきです。そこで、テーマ更新の影響を受けない「mu-plugin」(Must-Use Plugins)方式での実装をおすすめします。

mu-pluginは、WordPressの特定のディレクトリに配置するだけで自動的に有効化され、管理画面のプラグイン一覧には表示されない特殊なプラグインです。これにより、誤って無効化される心配がなく、またテーマの更新によってコードが上書きされることもありません。今回ご紹介する404ページのnoindex設定のような、サイトの根幹に関わる重要な機能の実装には最適な方法と言えるでしょう。実装はmu-pluginで行い、テーマ更新の影響を受けないようにします。SEOプラグインを併用している場合は、本コードのフィルタ優先度(999)で上書きされるため競合しにくく、安心です。

具体的な実装手順は以下の通りです。まず、WordPressのwp-contentディレクトリ内にmu-pluginsというディレクトリが存在しない場合は作成します。次に、そのmu-pluginsディレクトリ内にnoindex-404.phpというファイルを作成し、以下のPHPコードを記述します。このコードは、WordPressが404ページと判断した場合にのみ、<head> 内に meta robotsnoindex)を出力し、あわせて HTTP ヘッダーに X-Robots-Tag: noindex, follow を送るものです(follow はデフォルト挙動なので noindex 指定だけでも実質同じ効果です)。ファイルの作成と同時に、適切な所有者とパーミッションを設定することも忘れないようにしましょう。

WordPress 5.7+ / Apache(apache:apache想定)/ AlmaLinux 例
※パスはあなたの環境に合わせて置き換えてください(/var/www/html など)。

# 1) 置き場所を作成
install -d -m 755 /var/www/html/wp-content/mu-plugins

# nano もしくは vi で編集願います

<?php
/*
Plugin Name: Noindex 404 (MU)
Description: Add robots noindex on 404 pages and send X-Robots-Tag header.
Author: MASA
*/

add_filter('wp_robots', function(array $robots): array {
    if (is_404()) {
        unset($robots['index']);
        $robots['noindex'] = true; // => <meta name="robots" content="noindex">
    }
    return $robots;
}, 999);

add_filter('wp_headers', function(array $headers): array {
    if (is_404()) {
        $headers['X-Robots-Tag'] = 'noindex, follow';
    }
    return $headers;
}, 999);

add_action('template_redirect', function () {
    if (is_404()) {
        status_header(404);
    }
}, 0);
# 3) 権限
chown apache:apache /var/www/html/wp-content/mu-plugins/noindex-404.php
chmod 644 /var/www/html/wp-content/mu-plugins/noindex-404.php

# 4) 動作確認(各自の環境合わせて)
curl -I https://hd0.biz/404/ | sed -n '1p;/^x-robots-tag:/Ip'
curl -sL https://hd0.biz/404/ | grep -i '<meta name="robots"'

今回はWordPressの404ページをnoindex設定し、検索結果の最適化を図る方法、そしてテーマ更新に強いmu-plugin方式での安全な実装について解説しました。この設定はサイトのSEOを健全に保つ上で非常に重要でありながら、見過ごされがちなポイントです。mu-pluginを活用することで、一度設定すればテーマの変更や更新を気にすることなく、長期的に安定した運用が可能となります。ぜひ今回の小ネタを参考に、ご自身のWordPressサイトのSEO対策をさらに強化してみてください。

8/25 一部コード修正しました。