6 min read

SEOとの戦い & Canonical問題 - Vol.4

SEOとの戦い & Canonical問題 - Vol.4

「正規タグなしの重複」という悪夢

Webサイトを公開して数日後、Google Search Consoleを開くとこんな警告が出ていました。

「ユーザーにより、正規ページとして選択されていない重複」

この警告を見たこと、ありませんか? この記事を読めば、この問題の原因と対策がわかり、あなたのサイトからも警告を消すことができます。

特にAstroのような静的サイトジェネレーター(SSG)を使っていると、この問題によく直面します。

原因:正体は「末尾スラッシュ」

原因の多くは、URLの末尾スラッシュ(Trailing Slash)の扱いにあります。 Webサーバーの設定によっては、以下の2つが「別のページ」として認識されてしまうことがあります。

  • https://kagayaki.com/menu
  • https://kagayaki.com/menu/

中身は全く同じなのに、Googleから見ると「重複コンテンツ(コピーコンテンツ)」に見えてしまうのです。これがSEO評価を下げる原因になります。

解決策:Canonicalタグを徹底する

解決策はシンプルです。すべてのページに <link rel="canonical" ...> タグを入れ、「これが正規のURLです」 と宣言することです。

Astroでは、astro-seo というパッケージを使うのが鉄板です。

1. astro-seo の導入

npm install astro-seo

2. Layoutファイルへの実装

すべてのページの基となるレイアウトファイル(Layout.astro)に導入します。

---
import { SEO } from 'astro-seo';
const { title, description } = Astro.props;

// 正規URLを生成(末尾スラッシュを除去するなど、ルールを決めて統一する)
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
---

<head>
    <SEO
      title={title}
      description={description}
      canonical={canonicalURL.toString()}
      openGraph={{
        basic: {
          title: title,
          type: "website",
          image: "https://kagayaki.com/og-image.jpg",
        }
      }}
    />
</head>

ここで重要なのは、Astro.siteastro.config.mjs で設定したドメイン)を使って、必ず絶対パスでCanonical URLを生成することです。

Antigravityへの指示例 (Prompt)

このSEO対策を実装するために、私が実際にAntigravityに投げかけた指示(プロンプト)のイメージです。

SEO Implementation Prompt:astro-seo パッケージを使って、サイト全体のSEO設定を強化したいです。 すべてのページの <head> にCanonicalタグを自動で挿入するように Layout.astro を改修してください。 その際、astro.config.mjssite 設定と現在のパスを使って、必ず絶対パス(https://...)になるように生成ロジックを組んでください。」

Debug Prompt: 「Search Consoleで『正規タグなしの重複』という警告が出ました。 サイトマップのURLと実際のURLの『末尾スラッシュ』の扱いが怪しいです。 astro.config.mjs の設定を確認し、一貫したURL構造になるように修正案を提示してください。」

具体的なパッケージ名を出しつつ、「絶対パスで生成して」や「末尾スラッシュが怪しい」といった仮説を含めることで、AIはより的確なデバッグを行ってくれます。

Agentic AI とのデバッグ

実は、この問題の原因を特定してくれたのもAI(Antigravity)でした。

私が「Search Consoleで重複エラーが出るんだけど…」とぼんやり相談したところ、彼は即座に:

「サイトマップのURLと、実際にアクセスできるURLの末尾スラッシュが不統一である可能性があります。astro.config.mjstrailingSlash設定と、canonicalタグの生成ロジックを確認しましょう。」

と回答し、修正コードまで提案してくれました。 人間が数時間かけて調査する内容を、一瞬で解決してくれる。これがAIペアプログラミングの威力です。

今日からできること

まずは今日、あなたのサイトの <head><link rel="canonical" ...> タグが正しく入っているかを確認してみてください。 Chromeのデベロッパーツールで <head> を開くだけで、即座に確認できます。


次回予告

SEOの基盤は整いました。次は、サイトの「見た目」を劇的に進化させます。 今回のブログリニューアルでも導入した 「季節限定LPの爆速構築」 と、動的デザインの実装について解説します。

🤖 Antigravity Prompt

この記事の成果物を作成するために、実際に使用した(または推奨される)プロンプトです。

あなたはテクニカルSEOのスペシャリストです。Astroで構築されたWebサイトにおいて、正規化URL(Canonical URL)を自動的に正しく設定するための実装方法を教えてください。
- 本番ドメイン (example.com) を基準とする
- 末尾のスラッシュ(trailing slash)の扱いを統一する
- 各ページごとの上書き設定も可能にする
Layoutコンポーネントとastro.config.mjsの設定例を示してください。
Share:

Related Posts