微信客服
Telegram:guangsuan
电话联系:18928809533
发送邮件:xiuyuan2000@gmail.com

商品ページがインデックスされない6つの技術的理由|重複コンテンツ・クロール制限を除く

本文作者:Don jiang

ページがインデックスされない原因は、コード構造やサーバー設定に隠れている場合があります。

たとえば、クローラーが動的コンテンツを「読み取れない」場合や、パラメーター設定ミスでページが重複と判定され、インデックスから除外されることがあります。

この記事では、技術的な観点から、多くの人が見落としがちですがインデックスに直接影響する6つの実務的な問題をまとめました。

商品ページがインデックスされない6つの技術的原因

Table of Contens

ページの読み込み速度が遅く、クローラーがクロールできない

たとえば、サーバーの応答時間が3秒を超えると、Googlebotはクロールを中止するか、ページの一部しかインデックスしない可能性があります。

この問題は多くのサイト管理者がユーザー体験(例:読み込みアニメーションの表示)だけに気を取られ、クローラーの「忍耐閾値」を見落とすことで発生しやすいです。

サーバー応答時間が長すぎる

問題の特定方法:Google Search Consoleの「ウェブに関する主な指標」やGTmetrixなどのツールで「TTFB(最初のバイトまでの時間)」を確認し、1.5秒を超える場合は改善が必要です。

解決方法

  1. サーバーのスペック(CPU/メモリ)をアップグレードする、または高性能ホスティング(Cloudways、SiteGroundなど)に移行する。
  2. データベースクエリを最適化する(複雑な結合クエリを減らし、商品データテーブルにインデックスを追加する)。
  3. RedisやMemcachedなどのサーバーキャッシュを導入し、動的ページ生成の頻度を減らす。

最適化されていないリソースファイル

典型的な問題

  • 商品画像が圧縮されていない(例:PNGがWebPに変換されていない、解像度が2000pxを超える)。
  • CSSやJSファイルが統合されておらず、数十件のHTTPリクエストが発生している。

修正手順

  1. SquooshやTinyPNGで画像を圧縮し、主な画面サイズ(例:横幅1200px)に合わせる。
  2. WebpackやGulpでCSS/JSを結合し、ファイルリクエスト数を削減する。
  3. GzipやBrotli圧縮を有効にし、リソース転送サイズを減らす。

レンダリングをブロックするスクリプト

クローラーの視点:クローラーがHTMLを解析する際、非同期読み込みされていないスクリプト(例:同期読み込みのGoogle Analytics)に遭遇すると、スクリプトの実行が完了するまでレンダリングを停止します。

最適化方法

  • 不要なスクリプトにはasyncまたはdefer属性を追加する(例:)。
  • チャットウィジェットやヒートマップ解析などのサードパーティツールは、ページ読み込み後に遅延実行する。

チェックツールと優先順位の推奨

セルフチェックリスト

  1. PageSpeed Insights:具体的なリソース読み込み問題を特定(例:「JavaScript実行時間を短縮する」)。
  2. Screaming Frog:商品ページのTTFBを一括検査し、読み込み超過URLを抽出。
  3. Lighthouse:「チャンス」セクションで最適化提案を確認(例:未使用のCSSの削除)。

緊急最適化の優先順位:TTFBが2秒を超えるページ、1ページあたりのHTTPリクエスト数が50件を超えるページ、画像サイズが500KBを超えるリソースを優先的に対処。

参考データ:Googleの公式データによると、ページ読み込み時間が1秒から3秒に増加すると、クロール失敗率は32%上昇します。上記の最適化を行うことで、ほとんどの商品ページは2秒以内に読み込みが完了し、インデックス成功率が大幅に向上します。

robots.txtファイルで商品ディレクトリを誤ってブロック

たとえば、Disallow: /tmp/を誤ってDisallow: /product/と記述すると、クローラーは商品ページを完全にスキップし、どんなにコンテンツが優れていてもインデックスされません。

robots.txtによるブロック問題の迅速な確認

チェックツール

  • Google Search Console:「インデックス」>「ページ」レポートで、商品ページが「ブロック済み」と表示された場合、詳細をクリックしてrobots.txtによるブロック状況を確認。
  • オンラインテストツールrobots.txtテストツールでURLを入力し、クローラーの視点でアクセス権を確認。

典型的なエラーの特徴

  1. パスのスペルミス(例:/produc//product/にすべきところで誤記)。
  2. *ワイルドカードの過剰使用(例:Disallow: /*.jpg$で全商品画像をブロックしてしまう)。

誤ったブロックルールの修正方法

記述ガイドライン

  • パスの正確なマッチング:曖昧なブロックを避け、一時ディレクトリには Disallow: /old-product/ を使用し、Disallow: /product/ は避けてください。
  • クローラーの種類を区別:スパムボットのみをブロックしたい場合は、User-agentを明示する必要があります(例:User-agent: MJ12bot)。

パラメーターの取り扱い

  • 必要なパラメーター(ページネーション ?page=2 など)は許可し、Disallow: *?sort= を使って並び替えパラメーターのみをブロックします。
  • $ 記号でパラメーターの終端を明示(例:Disallow: /*?print=true$)。

緊急復旧と検証フロー

手順例

  1. robots.txtファイルを修正し、誤った行をコメントアウトまたは削除(例:# Disallow: /product/)。
  2. Google Search Consoleでrobots.txtの更新をリクエスト。
  3. 「URL検査ツール」で商品ページのクロール状況を手動で確認。
  4. 24時間後にインデックス状況を再確認し、未回復の場合は商品ページのサイトマップを手動で送信。

保護対策

  • バージョン管理ツール(Gitなど)でrobots.txtの変更履歴を管理し、ロールバックを容易にする。
  • テスト環境でルール変更を事前に検証し、本番環境のファイルを直接変更しない。

実際のケーススタディ

誤った設定

User-agent: *

Disallow: /

Allow: /product/

問題点Disallow: / がサイト全体をブロックするため、後続の Allow ルールは無効化されます。

正しい修正

User-agent: *

Disallow: /admin/

Disallow: /tmp/

Allow: /product/

ロジック:管理画面と一時ディレクトリのみをブロックし、商品ページは明示的に許可。

商品ページの内部リンク不足問題

商品ページにサイト内からの導線(ナビゲーション、関連記事、アンカーテキストなど)がない場合、どんなに優れたコンテンツでもクローラーにインデックスされにくくなります。

このような問題は、新商品、独立した特集ページ、外部ツールで一括登録されたページに多く見られます。サイトのナビゲーション構造に適切に組み込まれていないためです。

ナビゲーション構造の欠如または設計ミス

代表的な問題

  • 商品ページがメインナビゲーションメニューやカテゴリーディレクトリに含まれていない(検索結果ページにのみ存在)。
  • モバイルでハンバーガーメニューを使用し、重要な商品ページへのリンクが複数階層のサブメニュー内に隠れている。

解決策

自己診断ツール:Screaming Frogでサイト全体をクロールし、「内部リンク数≤1」の商品ページを抽出。

最適化ステップ

  1. メインナビゲーションに「人気新商品」や「おすすめカテゴリ」リンクを追加し、重要な商品一覧ページへ直接リンク。
  2. すべての商品ページを少なくとも1つのカテゴリーディレクトリに必ず含める(例:/category/shoes/product-A)。

関連記事モジュールの活用不足

クローラー視点:「おすすめ商品」などの動的レコメンドコンテンツがJavaScriptで読み込まれる場合、クローラーはリンクを正しく認識できないことがあります。

動的レコメンドコンテンツに静的な入口を設ける(例:「今週の売れ筋トップ10」を固定枠で表示し、商品ページへの直リンクを設置)。

パンくずリストが重要な階層をカバーしていない

誤った例:パンくずリストの階層が短すぎて、カテゴリーページを含んでいない(例:ホーム > 商品A)。

修正方法

  1. カテゴリーレベルを完全に補完する(例:ホーム > スポーツシューズ > ランニングシューズ > 商品A)、各階層にクリック可能なリンクを付ける。
  2. CMSでパンくずリストを自動生成するよう設定し、URL構造と一致させる(例:/category1/category2/product-name)。

コンテンツページ内のアンカーテキストリンクが不足

商品説明の中に自然な形で関連商品へのリンクを挿入する(例:「このカメラは三脚Xに対応しています」)。

ユーザーレビューセクションに「この商品を購入した人はこんな商品も見ています」というアンカーテキストの推薦を追加。

緊急対応策

一時的な対策

  • 「新商品情報」まとめページを作成し、インデックス未登録の商品を集めて、トップページのフッターにリンクを追加する。
  • 既存の高評価ページ(例:ブログ記事)内に対象商品のページリンクを挿入する(例:「おすすめ記事:2024年ベストランニングシューズランキング」)。

長期的な運用

  • 毎週Ahrefs Site Auditなどのツールで商品ページのインデックス状況を監視し、内部リンクの不足を随時補完する。

JavaScriptの動的レンダリングによるコンテンツ欠落

例:VueやReactで構築された商品ページで、SKUやスペックなどの重要情報をAPIで非同期読み込みしている場合、クローラーがタイムアウトで情報を取得できないことがある。

インデックスされたページには「読み込み中」のプレースホルダーしか表示されず、検索順位の競争力を失う。

動的レンダリングによるコンテンツ欠落の確認方法

自己診断ツール

  1. Google モバイル フレンドリーテスト:商品ページのURLを入力し、レンダリング後のHTMLスクリーンショットに価格や購入ボタンなどの主要コンテンツが含まれているか確認。
  2. curlコマンドによるクローラーのシミュレーション:ターミナルでcurl -A "Googlebot" URLコマンドを実行し、返されたHTMLとブラウザの「ページソース表示」の内容を比較。

典型的な特徴

  • ページソースに商品説明やレビューなどの主要テキストがなく、

    などのプレースホルダーのみが存在する。

  • Google Search Consoleの商品ページの「インデックス カバレッジ」レポートにて「クロール済み – インデックス未登録」と表示され、「空白ページ」が原因となっている。

サーバーサイドレンダリング(SSR)とプリレンダリングの対策

SSRのメリット:サーバー側で完全なHTMLを生成してクローラーに返すことで、コンテンツを一度に収集可能。

対応フレームワーク:Next.js(React)、Nuxt.js(Vue)、Angular Universal。

コード例(Next.jsの商品ページルーティング):

export async function getServerSideProps(context) {
const product = await fetchAPI(`/product/${context.params.id}`);
return { props: { product } };
プリレンダリングの代替案:SSRへの改修が難しいサイトでは、Prerender.io または Rendertron を使用して静的スナップショットを生成します。

設定手順

  1. サーバーミドルウェアでクローラーのリクエストを検出し、プリレンダリングサービスに転送します。
  2. レンダリング結果をキャッシュし、重複生成のコストを削減します。

動的コンテンツの読み込みタイミングの最適化

重要なロジック:商品タイトル、価格、仕様などの主要情報は、初期HTMLに直接埋め込み、JSの非同期読み込みを避けます。

誤った例

// 非同期で価格を取得(クローラーは待機できない可能性あり)
fetch('/api/price').then(data => {
document.getElementById('price').innerHTML = data.price;
});

修正方法

<!-- 初期HTMLに価格を直接出力 -->

$99.99

JSの実行時間とリソース容量の制御

クローラーの許容閾値:Googlebotは最大約5秒間、JSの実行とレンダリングを待機します。

最適化対策

コード分割:商品ページでは必要なJSのみ読み込む(例:不要なスライダーやギャラリーを削除)

// 非重要モジュール(例:商品動画プレーヤー)を動的インポート
import('video-player').then(module => {
module.loadPlayer();
});

非ファーストビューリソースの遅延読み込み:レビューやおすすめ商品などはDOMContentLoadedイベント後に読み込みます。

URLパラメータの混乱による重複ページ

例えば、同じ商品でもパラメータの順序が異なると(/product?color=red&size=10/product?size=10&color=red)、クローラーは別々のページと認識し、コンテンツの評価が分散したり、重複コンテンツのペナルティを受ける可能性があります。

重複URLパラメータの影響範囲の確認

自己診断ツール

  1. Google Search Console:「インデックス登録されたが送信されていない」URLを確認し、重複パラメータページの割合を調査します。
  2. Screaming Frog:「パラメータを無視する」設定で全サイトをクロールし、同一商品ページのパラメータバリエーション数を確認します。

典型的な問題ケース

  • 同じ商品がフィルターによって複数のURLを生成する(例:価格順、色フィルターなど)。
  • ページネーションパラメータに rel="canonical" が未設定で、ページネーションが別コンテンツとして認識される。

パラメータの正規化と評価の集約

解決策の優先順位

パラメータの順序を固定:パラメータの並び順を統一(例:色→サイズ→並び順)し、順序の違いによる重複URLを防止します。

  • :すべてのURLを /product?color=red&size=10 の順序に統一し、その他の順序は301リダイレクトで正規URLに誘導します。

Canonicalタグの活用:パラメータ付きページのhead内に、メイン商品ページへのcanonicalリンクを追加します。

不要なパラメータのブロック

meta robots noindex または robots.txt を利用して、トラッキングパラメータ(例:?session_id=xxx)のインデックス登録を防ぎます。

サーバー側のパラメータ処理技術

URL書き換えルール:

Apacheの例(ページネーションパラメータを非表示にしてURLを正規化):


RewriteCond %{QUERY_STRING} ^page=([2-9]|10)$
RewriteRule ^product/?$ /product?page=%1 [R=301,L]

Nginxの例(ソートパラメータの統合):


if ($args ~* "sort=price") {
rewrite ^/product /product?sort=price permanent;
}

動的パラメータの制御:

  • CMSで許可されたパラメータのリストを事前に設定し、許可されていないパラメータは404エラーを返すか、メインページへリダイレクトします。

ページネーションおよびフィルターページのSEO対策

ページネーションページ:

  1. rel="prev" および rel="next" タグを追加して、検索エンジンにページの関連性を伝えます。
  2. 2ページ目以降(例:page=2 以降)は noindex を設定し、1ページ目のみインデックス登録を許可します。

フィルターページ:

商品が存在しないフィルター結果ページ(例:/product?color=purple で在庫が0の場合)は、404エラーを返すか、関連カテゴリーに302リダイレクトします。

正規のHTMLタグの欠如

例えば、H1タグを設定していないページは「テーマ不明」と判断される可能性があり、Schema構造化データを設定しないと、商品価格や在庫状況などの重要な情報が検索結果に反映されません。


<link rel="canonical" href="https://example.com/product" />

H1タグの欠落または重複

問題の特定

  • ブラウザの開発者ツールで要素を確認し、商品ページにキーワードを含んだ唯一の

    タグが存在するか確認します。

  • よくある誤り:H1タグが複数存在(例:商品名とブランド名の両方に使用)、H1の内容がページのテーマと無関係(例:「ご来店ありがとうございます」など)。

修正方法

  • 各商品ページには必ず1つだけH1タグを設定し、商品型番と主要なセールスポイントを含めます(例:

    ランニングシューズXシリーズ|クッション性&通気性、2024年新作

    )。

  • H1を画像で代用するのは禁止です(検索エンジンは画像内の文字を認識できません)。どうしても画像を使う場合は、aria-label属性を追加します。

Metaディスクリプション(description)の最適化不足

影響:meta descriptionが不十分または未設定の場合、検索エンジンがページ内のランダムなテキストを抜粋して検索結果に表示するため、クリック率が低下する恐れがあります。

最適化手順

  1. 150〜160文字以内に収め、商品の主要キーワードと行動喚起のフレーズを含めます(例:)。
  2. CMSでdescriptionを自動生成し、商品特徴の項目を自動で取得できるよう設定します。

Schema構造化データの未対応

クローラーのニーズ:Schemaマークアップは、検索エンジンに価格・評価・在庫状況などの重要な情報を明確に伝え、リッチリザルトとしての表示を強化できます。

実装方法

Schema Markup Generatorを使用し、ProductタイプのJSON-LDコードを生成し、ページの内に挿入します:

<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "ランニングシューズXシリーズ",
"image": "https://example.com/shoe.jpg",
"offers": {
"@type": "Offer",
"price": "99.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
script>
  • 検証ツール:Google構造化データテストツールを使ってマークアップが正しく反映されているか確認します。

画像のAlt属性未設定

SEO効果:Alt属性は、検索エンジンが画像内容を理解する助けとなり、アクセシビリティ向上にもつながります。

誤った例

  • Altが空()またはキーワードを羅列するだけ(alt="ランニングシューズ スニーカー クッションシューズ 2024新作")。

正しい書き方

  • 画像の内容と使用シーンを具体的に説明します(例:alt="ランニングシューズXシリーズのブラックモデル実物写真、ソールのクッション構造を強調")。
  • 装飾目的の画像にはalt=""を設定し、余計な情報を省きます。

Canonicalタグの誤設定

リスク:商品ページのcanonicalタグがカテゴリーページやトップページを指すと、ページのSEO評価が分散する恐れがあります。

チェック・修正方法

  • Screaming Frogなどのツールで商品ページを一括クロールし、canonicalタグが外部URLや誤ったURLを指しているページを抽出します。
  • 正しい書き方:(現在のページの正規URLを明示)。

長期間インデックスされていない商品ページを選び、このチェックリストに沿って確認すれば、通常30分以内に主要な問題を特定できます。

滚动至顶部