Shopifyの重複コンテンツ: 原因と解決方法
Shopifyの重複コンテンツは商品URL、タグページ、ページネーションから発生します。自動的な正規化では不十分で、手動での対応が必須です。
Shopifyは標準で複数のURLを同じ商品に対して生成します。GoogleはこれをDuplicate Contentと判定し、ランキングが分散します。良いニュースとしては、プラットフォームは既に正規タグを自動的に設定していますが、この自動化は万能ではありません。クローリング予算を保護し、リンク評価を1つの強力なURLに統合するには、積極的な対応が必要です。
重要なポイント
- Shopifyは各商品に対して最低2つのインデックス可能なURL(
/products/と/collections/[name]/products/)を作成します。 - 正規タグは指示ではなく、ヒントです。Googleが常に従うわけではありません。
/collections/shoes/runningのようなタグでフィルタされたコレクションページは、Silent Duplicate Content工場です。?page=1は各コレクションページの完全な重複で、Shopifyは自動的に正規化しません。- 修正の正しい順序は、正規タグの確認、内部リンクの整理、Noindexの設定、その後robot.txtの調整です。
Shopifyの重複コンテンツとは何ですか?
重複コンテンツとは、複数のURLで同一または非常に似たコンテンツにアクセスできる状態です。検索エンジンにとっては技術的に異なるページですが、ショッパーには違いが見えません。GoogleはどのURLをインデックスに含めるか、どれを無視するかを自分で判断する必要があります。この判断はGoogleが独立して行い、通常はあなたの希望通りではありません。
Shopifyは4つの主要なソースから重複コンテンツを生成します。
- Collection対応の商品URL(最大の問題)
- タグでフィルタされたコレクションページ
- ページネーションURL(
?page=1) - バリアントパラメータ(
?variant=12345)
4つのソースの詳細
1. Collection対応の商品URL
これは最も一般的な原因です。Shopifyの各商品は2つのパス経由でアクセス可能です。
https://your-shop.jp/products/blue-t-shirthttps://your-shop.jp/collections/t-shirts/products/blue-t-shirt
Shopifyはcollection変種に自動的に正規タグを設定し、/products/ URLをポイントします。これは解決策のように見えますが、半分だけです。正規タグは推奨事項であり、指示ではありません。内部リンクがcollection対応URLを引き続きポイントしている場合、これはGoogleに矛盾したシグナルを送り、Googleは誤ったURLをマスターとして選択する可能性があります。
一般的なトリガー: 多くのテーマで| within: collection Liquidフィルターが自動的にCollection対応リンクを生成します。Collection内でリンクされた各商品には、独自の重複URLが与えられます。
Liquidテンプレートでの修正:
product-card.liquidまたはそれに相当するスニペットを確認してください。商品へのリンクは常にproduct.urlをポイントし、product.url | within: collectionではありません。
{# 間違い - Collection対応URLを生成 #}
<a href="{{ product.url | within: collection }}">
{# 正しい - 常に/products/をポイント #}
<a href="{{ product.url }}">
テーマコードでこの単一の変更により、すべての内部リンクシグナルを正規URLにリダイレクトします。
2. タグでフィルタされたコレクションページ
ShopifyのTaggingシステムは便利ですが、Silent Duplicate Content生成機です。顧客がタグでコレクションをフィルタすると、以下のようなURLが生成されます。
/collections/shoes/running/collections/shoes/waterproof/collections/shoes/running+waterproof
これらのページは親コレクションと全く同じ商品を含むことが多く、同じタイトルとメタディスクリプションを持っています。50のコレクション全体で200のタグを持つストアの場合、クローリング予算を消費し、決してランキングされない10,000以上の薄いページが発生する可能性があります。
修正方法:
theme.liquidのすべてのタグでフィルタされたページにNoindexメタタグを設定します。current_tagsが設定されているか確認します。
{% if current_tags %}
<meta name="robots" content="noindex, follow">
{% endif %}
followにより、Googlebot はページ上のリンクをたどり続けることができます。インデックス化のみが防止されます。または、robots.txt.liquidでDisallow: /collections/*/を使用してタグページをブロックできますが、robots.txtはインデックス化保護ではなく、クローリングヒントにすぎないことに注意してください。永続的にクリーンなインデックス化が必要な場合は、両方のアプローチを組み合わせます。
3. ページネーションURL
200の商品と1ページあたり24の商品を持つコレクションは、9つのページネーションURLを生成します。Shopifyは?page=2、?page=3などを追加します。実際の問題は、?page=1が基本URL/collections/shoesの直接の重複であり、Shopifyはこのバリアントを自動的に正規化しません。
| URL | ステータス | Shopifyのデフォルト |
|---|---|---|
/collections/shoes | 正規、インデックス可能 | 正しい |
/collections/shoes?page=1 | 基本URLの重複 | 正規化されていない |
/collections/shoes?page=2 | 独立したページネーション | Self-canonicalized |
/collections/shoes?sort_by=price | 異なるソートの重複 | 正規化されていない |
?page=1の場合、collectionテンプレートの手動正規化が役立ちます。
{% if current_page == 1 %}
<link rel="canonical" href="{{ collection.url | prepend: shop.url }}">
{% else %}
<link rel="canonical" href="{{ collection.url | prepend: shop.url }}?page={{ current_page }}">
{% endif %}
4. バリアントパラメータ
商品バリアントは/products/t-shirt?variant=12345678のようなURLを生成します。ここではShopifyは実際に正しいことをしています。バリアントURLに自動的に設定された正規タグは常に基本商品URLをポイントし、バリアントパラメータなしです。これはこの領域の重複コンテンツから保護します。
複雑な商品コンフィギュレーターの外部アプリに注意が必要です。これらのアプリの一部はバリアント用に独自のページを作成し、Shopifyの標準正規化をバイパスします。アプリをインストールした後は常に、正規タグのない新しいURLが出現するか確認してください。
重複コンテンツの診断: ツール
修正を適用する前に、インベントリが必要です。これらのツールは問題を明らかにします。
- Google Search Console:「ページ」に移動して「重複、Googleは別の正規URLを選択しました」でフィルタリングします。Googleがあなたの正規化を無視する場合、これは内部リンクが矛盾していることを示す強い信号です。
- Screaming Frog SEO Spider:ストアをクロールしてすべてのURLをエクスポートします。同じ正規タグを共有するURLを探します。
- Google検索:
site:your-shop.jp inurl:/collections/を入力します。コレクションパスで商品URLが検索結果に表示される場合、Googleは正規化を受け入れていません。 - ページソースの表示:コレクション内の商品URLにアクセスし、
Ctrl+Uを押してrel="canonical"を検索します。hrefは/products/をポイントし、collection URLではありません。
修正の正しい順序
多くのマーチャントはすぐにrobot.txtに手を付けます。これは誤りです。正しい順序は次の通りです。
- 正規タグを確認して修正(theme.liquidと商品スニペット)
- 内部リンクをクリーンアップ(商品リンクで
| within: collectionフィルターを使用しない) - 弱いページにNoindexを設定(タグページ、内部検索結果)
- robot.txtを調整(補助的な手段のみ、代替案ではない)
robot.txtはクローリングを防ぎますが、インデックス化は防ぎません。Googleが既にページへのリンクを知っている場合、それは「このリストの説明は利用できません」というヒント付きでインデックスに含まれる可能性があります。
チェックリスト: Shopify重複コンテンツ監査
- [ ] テーマスニペットで
product.url | within: collectionを使用しているか確認 - [ ] さまざまなコレクションからの5つの商品URLをテストして、正規タグを確認
- [ ] Google Search Consoleで「重複、Googleは別の正規URLを選択」を確認
- [ ] タグページでNoindexタグを確認(
current_tags条件) - [ ] Collection ページで
?page=1が正しく正規化されているか確認 - [ ] アプリインストール後の正規タグなしの新しいバリアントURLをテスト
- [ ] Sitemap.xmlのみが正規的でインデックス可能なURLを含むことを確認
Shopifyが自動的に処理すること(と処理しないこと)
| 問題 | Shopifyのデフォルト | 手動操作が必要? |
|---|---|---|
| Collection内の商品 vs /products/ | 正規タグ設定 | はい、内部リンクが正しくポイントしていない場合 |
| バリアントURL(?variant=) | 基本URLへの正規化 | アプリコンフィギュレーターのみ |
| タグでフィルタされたページ | 保護なし | はい、Noindex必須 |
| ?page=1重複 | 正規化されていない | はい、手動の正規化ロジック必須 |
| ?sort_by=パラメータ | 正規化されていない | はい、robot.txtまたはNoindex |
| UTMパラメータ(?utm_source=) | 正規化がパラメータを無視 | いいえ、Shopifyが処理 |
| ブログページ | Self-canonicalized | いいえ |
重複コンテンツと2026年のAI可視性
2026年以降、クリーンなページアーキテクチャはさらに重要な役割を果たします。Google AI OverviewsやPerplexityのようなAI主導の検索は、構造的に明確で信頼できるページを好みます。未解決の重複コンテンツ問題を持つストアは矛盾したクロール信号を送信し、古典的なGoogleランキングに影響するだけでなく、AI生成回答で引用される可能性も低下させます。
技術的SEOの基礎をさらに深く掘り下げたい場合は、Shopify Technical SEO Playbookで完全なSitemap およびクロールアーキテクチャをカバーしています。Faceted Navigationとフィルタ URLがクローリング予算にどのような負担をかけるかを知りたい場合は、Shopify Faceted Navigation SEOガイドを参照してください。
まとめ
Shopifyの重複コンテンツは壊れたプラットフォームの兆候ではなく、積極的な管理を必要とする建築機能です。Shopifyは正規化の基礎を提供しますが、微調整はあなたの責任です。クリーンな内部リンク、薄いページへのNoindex、LiquidコードのロバストなCanonical ロジックが必要です。これら4つのソースを体系的に閉じることで、実際にランキングすべきページにリンク評価を統合します。
よくある質問
Shopifyの重複コンテンツはSEOの深刻な問題ですか?
はい。重複コンテンツはリンク評価を複数のURLに分散させ、Googleは自分でどのページをランキングするかを判断する必要があります。これにより、より弱いまたは望ましくないURLが検索結果に表示されることがよくあります。Shopifyは自動的に正規タグを設定しますが、これらはあくまで推奨事項で、拘束力のある指示ではありません。
正規タグはShopifyのすべての重複コンテンツ問題を解決しますか?
単独では解決しません。正規タグは推奨事項であり、矛盾したシグナル(例えば内部リンクが重複URLをポイントしている場合)がある場合、Googleはそれらを無視します。補足的に、クリーンな内部リンク、薄いページへのNoindex、必要に応じてrobot.txtの調整が必要です。
Shopifyで自分で正規タグを設定する必要があり、またはプラットフォームが処理しますか?
Shopifyは商品URL、バリアントパラメータについて自動的に正規タグを設定しています。ただし、タグでフィルタされたコレクションページ、?page=1重複、?sort_byパラメータについては、Liquidコードのテーマで、またはNoindexタグを使用して手動で対応する必要があります。