Copicode 日本語トップ

全ページ同じcanonicalになっている時は、共通headの固定URLを疑う

自作PHPサイトやテンプレートサイトでは、includes/head-tags.phpincludes/meta.php のような共通ファイルでhead内のタグを出すことがあります。

この時、共通ファイルへ固定のcanonical URLを書いてしまうと、全ページが同じURLを正規ページとして伝えてしまいます。Search Consoleで代替ページや重複、Google選択canonicalのズレが増えた時は、まず複数ページのHTMLソースを見比べます。

先に結論

  1. トップページ、記事ページ、下層ページのHTMLソースを開く
  2. rel="canonical" が各ページで違うURLになっているか確認する
  3. 全ページ同じURLなら、共通headやmeta出力を確認する
  4. 共通ファイルに固定URLを書かず、ページごとのURLから出す
  5. canonicalは1ページに1つだけ出す
  6. サイトマップと内部リンクも正規URLへそろえる
  7. 修正後、Search Consoleで代表的なURLを再検査する

まず3ページを見比べる

全ページ同じcanonicalかどうかは、1ページだけでは分かりません。種類の違うページを3つ選んで、HTMLソースを確認します。

見るページ確認することよい状態
トップページcanonicalがトップURLかhttps://example.com/
通常の記事ページcanonicalがその記事URLか記事自身のURL
階層の深いページ下層でも正しいURLか下層ページ自身のURL

記事ページを開いているのに、canonicalが全部トップページや同じ記事URLになっているなら修正対象です。

原因になりやすい場所

共通化されたサイトでは、canonicalの出力元が1か所にまとまっていることがあります。便利ですが、そこに固定URLを書くと全ページへ広がります。

場所起きやすいミス見ること
includes/head-tags.php固定canonicalを直接書いた全ページ共通で出るタグがないか
includes/meta.php1つのURLを使い回しているページ別変数を読んでいるか
各ページのテンプレートコピー元の記事URLが残っている新規記事ごとのURLに変えているか
CMSやSEO設定サイト全体canonicalを固定した記事単位のcanonical設定
テーマファイルカテゴリや記事で同じheadを使うページ種別ごとの出し分け

固定URLではなくページごとに出す

共通ファイルの中へ、特定の記事URLを直接書くのは避けます。ページごとの変数や現在のURLからcanonicalを出す形にします。

<!-- 悪い例: 共通headに固定URLを書く -->
<link rel="canonical" href="https://example.com/sample-article.php">
<!-- 考え方: ページごとのURLをcanonicalに使う -->
<link rel="canonical" href="https://example.com/current-page.php">

PHPサイトでは実装方法がサイトごとに違います。大事なのは、共通ファイルが「固定URL」ではなく「そのページの正規URL」を受け取って出すことです。

Search Consoleで出やすいサイン

全ページ同じcanonicalになっていると、Search Consoleでは次のような状態とつながることがあります。

Search Consoleの表示見ること進む記事
代替ページ(適切なcanonicalタグあり)出したい記事が別URLの代替扱いになっていないか代替ページcanonical
Googleが選択した正規URLが想定と違うGoogleが別URLを代表にしていないかGoogle選択canonical
重複していますが、ユーザーが正規ページとして選択していませんサイト側の正規指定が不足または不自然でないか重複・正規未指定
クロール済み - インデックス未登録内容だけでなくcanonicalの向き先も確認するクロール済み未登録

直した後の確認表

AIに渡す調査メモ

全ページ同じcanonicalの相談では、複数ページのcanonicalを並べて渡します。1ページだけだと判断しづらいです。

全ページ同じcanonicalになっている可能性を確認したいです。

トップページURL:
トップページのcanonical:

記事ページURL:
記事ページのcanonical:

下層ページURL:
下層ページのcanonical:

canonicalを出していそうなファイル:
includes/head-tags.php / includes/meta.php / 各ページ / CMS設定 / 不明

Search Consoleで出ている表示:
代替ページ / Google選択canonicalが違う / 重複 / クロール済み未登録 / その他

サイトマップに入っているURL:
内部リンクが向いているURL:

確認してほしいこと:
1. 全ページ同じcanonicalになっているか
2. 原因が共通head、meta出力、テンプレート、ページコピーのどれに近いか
3. どのURLをcanonicalにすべきか
4. 修正後に確認するページとSearch Console項目

公式情報で確認する