Google Search Console の「クロール済み - 現在インデックス未登録」バケットに、トピックのパーマリンクやページネーション URL が大量に流入しています(20年前にインポートされたフォーラム、Discourse バージョン v2026.9.0-latest、セルフホスト環境で、約 35,000 件の URL)。
調査で判明したこと:
Discourse は、長いトピックに対してクローラー向けに ?page=N のページネーションリンクを配信しています(実際の UI は無限スクロールであるため)。JS 対応クライアント(Googlebot のレンダラーを含む)がこれらの ?page=N URL を読み込むと、Discourse は /t/slug//<post_number> へのクライアントサイドリダイレクトを発行します。
再現手順:
- 任意の投稿番号または
?page=サフィックス付きのトピック URL をコールド状態でフェッチします:
GET /t///14 →
GET /t// → 同じ正規化 URL
GET /t///1 → 同じ正規化 URL
GET /t//?page=127 → (自己参照であり、正規化されていない) - サイトを通常通り(JS 有効)で読み込み、Ember のルーターを通じて投稿番号サフィックスを含む URL に移動します(例: 「Suggested Topics」から「最初の未読投稿へジャンプ」リンクをクリック)。SPA 遷移が完了すると、
document.querySelector('link[rel=canonical]').hrefは現在の投稿番号 URL となり、ベーストピックを指していません。
これは Discourse 自体が明示している設計意図と矛盾しています。この 2015 年のスレッドで、@sam は以下を明確に述べています:
▎ トピック: canonical はベーストピックを指すべきです。個別の投稿ページが離散的な検索結果として表示されるのを防ぐため。
▎ カテゴリ/リストページ: Google の独自のガイドラインに従い、ページネーション付きリストは重複ではないため、canonical を完全に削除します。
現在確認されている状況は、以下の 2 点でその意図を破っています:
?page=N(クローラー用ページネーション)付きのトピックでは、ベーストピックではなく、ページネーション付き URL が生サーバー HTML に canonical として表示されます。トピック(カテゴリリストとは異なり)は常にベース URL に集約されるべきと明確にされていたにもかかわらずです。?page=Nから/t/slug/id/<post_number>へのクライアントサイドリダイレクト後、レンダリングされた DOM の canonical もベーストピックにリセットされることなく、その投稿番号 URL のままになっています。
両方とも、2015 年の設計目標に対する意図的な現在の動作ではなく、リグレッション(機能劣化)のように見えます。
インデックス作成においてこれが重要である理由: Google のインデックス作成は、インデックス作成対象の DOM から canonical シグナルを読み取ります。Google が直接到達する投稿番号/ページサフィックス付きの URL(「投稿への共有リンク」機能(当フォーラムでは WhatsApp/Discord 経由で多用されています)、古い外部バックリンク(レガシーな vBulletin の ?p= パーマリンクを投稿番号 URL にマッピングしています)、またはクローラー自体が取得したリンク)は、ベーストピックに集約するのではなく、自身の canonical を宣言してしまいます。Search Console では、これらが「クロール済み - インデックス未登録」に数千件も滞留している状態として表示されます。
GSC レポートからの影響を受ける URL のサンプル(すべて 2026 年 9 月上旬に最終クロール):
/t/tengo-que-pasar-la-itv/21100/10
/t/new-honda-nsx-proyect/4910/69
/t/hacer-tubo-recto-sin-silencioso-del-catalizador-hacia-atras/25579/25
/t/kedada-japo-en-cataluna-2014/28148/75
/t/el-diario-de-patricio-de-la-plana/13286?p
チームへの質問: これは 10 年以上前の設計であり、その後に変更があった場合、これらの URL における自己参照 canonical が現在意図的なものなのか、それともリグレッションとして再検討する価値があるのか、ご教示いただけますでしょうか。有用であれば、HAR ファイルや追加の再現例を提供できます。