WordPressでSEOまわりの基本カスタマイズ:noindex・添付ファイルリダイレクト・canonical 無効化

カテゴリー お知らせ

この回では、「最低限ここだけ押さえておきたい SEO 挙動のカスタマイズ」をまとめます。

  • 検索結果ページ(/ ?s=...)と 404 ページを noindex にする
  • 添付ファイルページ(画像単体のページ)を親投稿へ 301 リダイレクトする
  • WordPress の自動 canonical リダイレクトを無効化する

いずれも functions.php に数行書くだけで制御できますが、
SEO面での意味とリスクを理解してから使うことが重要です。

前提:どこに書くコードなのか

いつもの通り、

  • 子テーマの functions.php に書く想定です。
  • パス例:wp-content/themes/your-child-theme/functions.php

親テーマ直書きだと、アップデートで消えてしまうので避けるほうが安全です。

1. 検索結果ページと 404 ページを noindex にする

なぜやるのか

  • サイト内検索結果(/?s=キーワード
  • 404 ページ(存在しないURL)

これらをインデックスさせても、ユーザーにとって有益なページとは言い難いことが多いです。
最低限の対策として、検索結果と 404 は noindex にしておくのがよくある運用です。

コード(functions.php)

// 検索結果ページと404ページを noindex
add_action( 'wp_head', function () {
  if ( is_search() || is_404() ) {
    echo '<meta name="robots" content="noindex,follow" />' . \PHP_EOL;
  }
} );

解説

  • is_search() …… 検索結果ページかどうか
  • is_404() …… 404 ページかどうか
  • noindex,follow …… ページ自体はインデックスしないが、ページ内リンクは辿る

注意点

  • 既に SEOプラグイン(All in One SEO / Yoast / RankMath など)を使っている場合
    そちら側で search / 404 の noindex 設定があることが多いです。
    → 二重管理を避けるため、どちらで管理するかを決めて片方を無効にした方がよいです。

2. 添付ファイルページを親投稿へ 301 リダイレクトする

添付ファイルページとは?

WordPress は、画像をアップロードすると、

  • メディアライブラリ内のデータ
  • 画像単体用のURL(添付ファイルページ)

の2つを自動的に用意します。

たとえば、こんなURLです:

https://example.com/sample-image/

このページは 画像しか表示されない薄いコンテンツ になりがちで、
インデックスされると SEO 的にもユーザビリティ的にも微妙です。

そこで、

添付ファイルページにアクセスされたら、その画像を貼っている「親投稿」にリダイレクトする

という挙動に変えます。

コード(functions.php)

// 添付ファイルページを親投稿へ301リダイレクト
add_action( 'template_redirect', function () {
  if ( is_attachment() ) {
    $parent_id = wp_get_post_parent_id( get_the_ID() );
    if ( $parent_id ) {
      wp_redirect( get_permalink( $parent_id ), 301 );
      exit;
    } else {
      wp_redirect( home_url( '/' ), 301 );
      exit;
    }
  }
} );

解説

  • is_attachment() …… 添付ファイルページかどうか
  • wp_get_post_parent_id() …… その画像を紐づけている投稿の ID
  • 親投稿があれば:親投稿へ 301 リダイレクト
  • 親投稿が無い場合:トップページへ 301 リダイレクト

SEO 的な意味

  • 薄い画像単体ページがインデックスされるのを防げる
  • 画像を使っている「本来見せたい記事」に評価を集約しやすくなる

画像検索から来るユーザーも、
親記事に飛ばしたほうが文脈が伝わるケースが多いため、実務でもよく使われる設定です。

3. canonical リダイレクトを無効化する

そもそも WordPress の canonical リダイレクトとは?

WordPress には、URLが微妙に違うアクセスを正規のURLに自動でリダイレクトする機能があります。

例:

  • https://example.com/post-name/(正)
  • https://example.com/index.php?p=123
  • https://example.com/post-name(末尾スラッシュ無し)

などを、内部で判定して正規URLへ飛ばそうとします。
これが redirect_canonical です。

通常は便利ですが、

  • かなり変則的なURL設計をしている
  • リバースプロキシや多言語サイトなどで、WordPressの「お節介リダイレクト」が邪魔
  • 特定のURL構造で無限リダイレクトが発生する

といった問題にぶつかることがあります。

コード(functions.php)

// canonical リダイレクト(redirect_canonical)を無効化
add_filter( 'redirect_canonical', function ( $redirect_url ) {
  return false;
} );

効果

  • WordPress が自動で行っていた canonical リダイレクトをすべて停止します。
  • URLが変な形でアクセスされても、基本的にそのまま表示されます。

強い注意点

  • 通常のサイトでは、あえて切る必要はありません。
  • 無効化すると、同一コンテンツが複数URLで表示される可能性が増えます
    重複コンテンツとしてSEOに悪影響を与えるリスクがあります。
  • どうしても canonical リダイレクトが邪魔になる特殊なケース(カスタムリバースプロキシ、多言語構成など)でのみ検討するのが安全です。

4. まとめ:この3つをどう使い分けるか

カスタマイズおすすめ度典型的な用途
検索・404 を noindexほぼ全サイトにおすすめ(ただしSEOプラグインと二重管理しない)
添付ファイル → 親投稿 301メディア多めのブログ・コーポレートサイト全般
canonicalリダイレクト無効低(慎重に)URLが特殊で WP の自動リダイレクトと衝突している場合のみ

ポイントは「意味を理解したうえでオンにする」ことです。

  • 設定そのものは数行で済む
  • しかし SEO とアクセスの挙動が変わる

という性質のものなので、

  1. ステージング環境(テスト環境)があるなら、そちらで試す
  2. Search Console でインデックス状況を見ながら調整する
  3. SEO プラグインとの役割分担を意識する

くらいまでやっておくと、実務でもトラブルを減らせます。

このシリーズの次の候補としては、

  • SVG許可やアップロード拡張子制御、不要な画像サイズ生成ストップ(メディア・アップロード編)
  • ?author=1 対策、XML-RPC無効化、ログイン画面カスタマイズなど(セキュリティ編)

といったテーマをまとめると、Qiita 上で「functions.php 基本レシピ集」としてかなり使い回しやすい形になると思います。

その他の記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)