動的URLパラメータのSEO設計でつまずく現場には、ほぼ共通点があります。`?color=red` や `?sort=popular` 自体が悪いのではありません。どのURLを検索対象として残すかを決めないまま機能追加を重ねていることです。EC、求人、不動産、比較サイト、資料一覧のように一覧ページが主役の事業では、この判断の遅れがそのままクロールの無駄と評価の分散につながります。
私は、動的URLの案件では最初に「作れるURLの数」ではなく、「公開資産として残すURLの数」を決めるべきだと考えています。検索で評価を積み上げるには、Googleへ渡す候補を広げるより、残す理由を説明できるURLだけに絞る方が結果は安定するからです。Google の URL 構造のガイドライン も一貫したURL設計を勧めていますが、実務ではその前段にある「残すか、残さないか」の線引きが欠かせません。
この線引きが弱いと、canonicalを入れても改善は鈍いままです。内部リンク、サイトマップ、構造化データ、URL生成ロジックがそれぞれ別の表現を押し始めるため、Googleへ一つの意図を示せなくなります。逆に、残すURLを先に絞れば、canonical、301、404、内部リンクの設計はかなり自動的に決まります。動的URLパラメータのSEO設計は、タグの書き方の問題というより、公開面の在庫管理の問題です。
以下では、実装前に止めるべき判断漏れを七つに分けて整理します。どれも「状況による」で片づけると現場が崩れる論点です。判断に迷ったら、URLを増やす方向ではなく、減らす方向から考えてください。
実装前に検索へ残すURLを先に絞り込む理由
動的URLの設計で最初に決めるべきなのは、検索へ残すURLの上限です。新しい絞り込み条件を追加するたびに「この条件も検索されそうだから残す」と積み上げる運用はやめるべきでしょう。検索需要、一覧の差分、恒常的な内部リンクの三つがそろわないURLは、検索対象にしない方が強い。ここを曖昧にすると、主要カテゴリより派生URLの方が多くなり、評価が散ります。
JPSM SEO 編集事業部では、生成可能なURLのうち検索対象として残すのは5〜15%までを一つの目安にしています。たとえば理論上1万通りの条件URLを作れる一覧でも、公開資産として残すのは500〜1,500本までに抑える。とくに月間PV10万未満のサイトで、最初から数百本の条件URLを開放するのは早すぎます。まずは10〜30本の条件ページから始め、3か月単位で成果を見ながら増やす方が現実的です。
検索対象に残す条件は、次の三つを満たすものに限ってください。
- 月間検索需要が原則50回以上あること
- 元の一覧と比べて掲載内容の重なりが70%未満であること
- ナビゲーション、特集導線、関連記事などから90日以上継続して内部リンクを張れること
この三条件を満たさないURLは、仮にインデックスされても長続きしません。検索需要が弱い、掲載差分が薄い、恒常リンクがない。このどれか一つでも欠けると、重複寄りのURLとして扱われやすくなります。
規模別の推奨も明確にしておくべきです。
- 月間PV10万未満、公開URL5,000以下なら、主要カテゴリ、主要地域、主要価格帯など売上に近い軸だけを残してください。3軸以上の掛け合わせは、原則として開放しない方が安全です。
- 月間PV10万〜100万、一覧URLが5,000〜5万規模なら、検索対象URLは許可制にしてください。運用担当が都度追加する方式では、半年ほどで破綻します。
- 月間PV100万以上、または派生URLが常時5万を超えるなら、SEO担当の目視ではなく、URL生成ロジックそのものに許可条件を組み込むべきです。ここまで来ると、運用ルールだけでは持ちません。
例外もあります。BtoBの高単価商材や専門資格、ニッチな工業製品のように、検索数が月10〜30回でも商談価値が高い領域です。この場合は検索需要の下限を下げても構いません。ただし、掲載差分と恒常リンクの条件まで緩めない方がよいでしょう。数字だけを見て残すと、結局は薄いURLの群れになります。
動的パラメータを四つに分けて判断する基準
パラメータ設計がぶれるのは、役割の異なる値を同じ箱で扱っているからです。Google の e コマースの SEO でも、絞り込みやバリエーションが大量のURLを生む前提で整理されています。検索対象、並び替え、計測、一時状態を混ぜたままでは結論が出ません。まず四つに分けるべきです。
分類 | 代表例 | 検索対象に残すか | 採用基準 | 避けるべき実装 |
|---|---|---|---|---|
検索意図に直結する条件 | `area=tokyo` `price=low` `brand=sony` | 原則として残してよい | 月間検索需要50以上、掲載差分30%以上、恒常リンクあり | 需要確認なしで掛け合わせを増やすこと |
並び替え・表示件数 | `sort=price_asc` `view=grid` `perPage=60` | 残さない | ユーザー体験のためだけに使う | サイトマップや関連記事からリンクすること |
計測・参照元識別 | `utm_source=` `ref=` `campaign=` | 残さない | 計測に必要でも内部リンクに混ぜない | CMSやテンプレートが計測付きURLを出力すること |
セッション・一時状態 | `sessionId=` `modal=open` `draft=true` | 残さない | 共有URLにも残さない | 状態保持をURLへ載せ続けること |
この表で重要なのは、検索対象に残してよいのは一段目だけだという点です。二段目以下は存在自体が悪いのではありません。検索資産として扱わないだけです。並び替えや計測は必要ですが、必要だからといって検索で残す理由にはなりません。
私は、検索対象として残す条件にさらに優先順位を付けています。
- A: 事業の柱と一致する軸。カテゴリ、地域、主要価格帯。常設ページとして残す
- B: 補助的に効く軸。ブランド、雇用形態、設備条件。需要確認後に一部だけ残す
- C: UI補助の軸。在庫あり、評価順、表示形式。検索対象にしない
このA・B・Cの整理を先に作ると、新しい条件が増えたときの議論が一気に速くなります。毎回ゼロから「残すかどうか」を考えるから、運用がぶれるのです。
商品一覧と詳細ページの役割分担も、同時に見直した方がよいでしょう。一覧で拾う検索意図と商品詳細で拾う検索意図が曖昧だと、条件URLだけ増えても成果は伸びません。ECの現場では、一覧と詳細の役割を先に固めておく方が効果的です。考え方の土台は、ECサイト商品ページSEOの実務基準 商品情報と構造設計で評価を積み上げる でも触れています。
例外として、期間限定施策や季節商材のように、一時的な需要が急増する軸はあります。この場合は、常設URLとして残す前に1シーズンだけの特集ページとして別管理する方が安全です。恒常条件URLに混ぜると、翌年以降の整理が難しくなります。
通常URLを一つに固定して信号をそろえる方法
検索対象URLを決めたら、次は通常URLの基準線を一つに固定します。Google の重複した URL の正規化 と 重複 URL の統合 が示す通り、正規URLのシグナルは一貫しているほど強くなります。大事なのは、canonicalタグを後から整えることではありません。最初から別表現を作らないことです。
通常URLの設計で、私は次の四つを必須にしています。
- `page=1` は通常URLへ統合し、1ページ目にだけ別URLを残さない
- `sort=default` や `view=list` など既定値はURLに出さない
- 複数条件の並び順を固定し、同じ意味の順序違いURLを作らない
- パンくず、カードリンク、サイトマップ、canonical、構造化データが同じURL生成関数を使う
この四つを守るだけで、同義URLはかなり減ります。とくに「内部リンクはA表現、canonicalはB表現、サイトマップはC表現」という状態は、現場で思っている以上に多いものです。正規URLの議論がいつまでも終わらない事業では、たいていこの分裂が起きています。
また、主要な軸をパスで持つか、パラメータで持つかも最初に決めてください。私の推奨は明快です。恒常的で検索需要が強い軸はパス寄り、補助的で組み合わせが増えやすい軸はパラメータ寄りです。たとえば主要カテゴリや主要地域は `/tokyo/apartment/` のような固定URLで持ち、並び替えやページ番号は `?sort=new&page=2` のように補助扱いにする。この分け方なら、公開資産とUI補助を混同しにくくなります。
例外はあります。既存サイトの技術制約が強く、今すぐパス構造へ寄せられない場合です。そのときも、同じ意味をパスとパラメータの両方で出すのは避けるべきです。`/tokyo/used/` と `?area=tokyo&type=used` が両方生きている設計はやめた方がよい。二つとも残す理由がありません。
URL設計と構造化データは切り離せません。`url` や `mainEntityOfPage` が通常URLとズレていれば、せっかく正規化した意図が濁ります。実装時には JSON-LDの書き方を実務で整理 ツールを使って安全に実装する基本手順 と Schema.orgマークアップの最新トレンド Google対応と実務設計のずれを埋める も一緒に確認してください。URLの設計が揺れたまま構造化データだけ整えても、根本的な改善にはなりません。
残さない組み合わせは入口から消すべき理由
動的URLで最も多い誤解は、「検索結果に出したくないURLにはcanonicalを置けばよい」という考え方です。これは半分だけ正しい考え方です。残さないURLは、まず入口を消すべきです。内部リンクが残っていればGoogleはそこへ来ますし、サイトマップや関連記事から押していれば、検索対象外だと言い張っても説得力がありません。
入口として見落としやすいのは、次の五つです。
- フィルタチップや絞り込みリンク
- 並び替えUI
- 関連記事や特集枠に紛れた条件URL
- JavaScriptの履歴更新で生成される共有URL
- XMLサイトマップとHTMLサイトマップ
とくに画面側の実装で起こりがちなのが、「UI操作のために `href` を持たせたリンク」を量産する設計です。ユーザー向けには便利でも、検索対象にしない状態ならリンクとして露出させる必要はありません。検索対象外の状態は、フォーム送信、状態保持、履歴更新のいずれかで扱い、恒常リンクとしてテンプレートに置かない方が安全です。
Google のページ分割と段階的ページ読み込み が示す通り、クローラが到達できる導線は明示的に設計する必要があります。言い換えれば、到達させたくないURLには導線を残さないということです。無限スクロールを採用する場合も同じで、検索対象にしたいページ単位URLは残し、検索対象にしない一時状態まではリンク化しない。ここを分けないと、クロールの流れはすぐ乱れます。
モバイル表示でも方針は変えないでください。PCでは通常URL、モバイルではフィルタ状態URLを共有リンクとして出すような実装は避けるべきです。Google のモバイル ファースト インデックスのベスト プラクティス を踏まえるなら、モバイル側の導線も同じルールでそろえる必要があります。画面幅の都合で別UIにしても、URLの扱いまで変える理由にはなりません。
ここでの推奨は単純です。検索対象外のURLは、リンクで押さない、サイトマップに載せない、構造化データに書かない。この三つを守るだけで、canonicalに頼り切る設計から抜け出せます。
canonicalを最後に使う設計が安定する理由
canonicalは必要です。ただし、最初の解決策にしてはいけません。Google の重複した URL の正規化 は、canonicalを複数ある正規化シグナルの一つとして扱っています。内部リンク、サイトマップ、リダイレクト、URLの一貫性が弱いままcanonicalだけ正しても、効果は限られます。
私は、canonicalを使う順番を固定することを勧めています。
- 検索対象URLを許可制で決める
- 通常URLの基準線を一つにする
- 検索対象外URLの入口を減らす
- それでも残る重複表現にcanonicalを使う
- 旧URLの恒久統合は301で処理する
この順番を崩すと、headタグだけ整えて土台はぐらついたままになります。現場でよくあるのは、並び替えURL、計測パラメータ付きURL、空条件URLのすべてを通常URLへcanonicalして終わりにするパターンです。短期的には落ち着いて見えても、リンクやサイトマップが派生URLを押し続ける限り、GoogleはそのURLを見に来ます。
canonicalを使うべき場面、301を使うべき場面、404/410を返すべき場面は分けてください。
状況 | 最も妥当な処理 | 判断基準 | やってはいけないこと |
|---|---|---|---|
同一内容の表現違い | canonical | 内容は同じで代表URLだけ示したい | 内部リンクは派生URLのまま放置すること |
旧URLから新URLへ恒久移行 | 今後は旧URLを使わない | canonicalだけで旧URLを残し続けること | |
サイト全体やカテゴリのURL変更 | URL 変更を伴うサイト移行 に沿った移行 | 大規模なURL変更でシグナルを引き継ぎたい | 旧URLをトップへ一括転送すること |
存在しない組み合わせ | 404または410 | 近い代替先がない | `200` とcanonicalでごまかすこと |
例外として、テスト環境や一時的な表示差分でどうしても別URLが必要な場合は、canonicalを先に置くしかないこともあります。ただし、その例外は短期間で畳む前提にしてください。恒久運用へ持ち込むと、後で必ず負債になります。
もう一点、canonicalは初期HTMLで安定して出す方がよいです。JavaScript実行後に書き換える設計は、レンダリングのタイミング差で事故が起こりやすい。SSRでもCSRでも、検索対象URLとcanonicalの関係は最初のレスポンスで一致させるべきでしょう。
ゼロ件ページと存在しない条件の返し方を分ける
動的URLで評価が崩れる原因の一つが、ゼロ件ページと存在しない条件を同じように扱ってしまうことです。この二つは別物です。条件自体は妥当だが一時的に在庫がないページと、そもそも成立しない組み合わせを同じ `200` で返すべきではありません。
私は次の基準で分けることを勧めます。
- 条件自体に継続需要があり、直近90日で30日以上は掲載実績があるなら、ゼロ件でも `200` を維持してよい
- ただし `200` を維持する場合は、代替カテゴリ、条件解除、近い条件への導線を必ず置く
- 削除済みコード、存在しないブランド、仕様上ありえない条件、最終ページを超えたページ番号は `404` か `410` を返す
- 統合先が明確な旧条件URLは `301` で寄せる
Google の HTTP ステータス コード を踏まえると、存在しないものを正しく存在しないと返すこと自体が重要です。ここを曖昧にすると、無効URLが延々とクロール対象に残ります。
実務では、次のように切り分けると迷いません。
- 「東京 中古マンション 3,000万円以下」のように実在する条件で、一時的に0件になっただけなら `200`
- 「廃止された雇用形態コード」「存在しないメーカーID」「`page=9999`」のように仕様上成立しないものは `404` か `410`
- 条件名変更やURLルール変更で新URLが明確にあるなら `301`
ここで無理に全部を生かそうとしないことです。検索流入を惜しんで存在しないURLを残す運用は、長期的には逆効果になりやすい。とくに月間PV10万未満のサイトでゼロ件ページを大量に抱えると、主要ページより先に薄いURLの手当てが必要になります。私は、ゼロ件で残すのは全条件ページの10%以内に抑える方がよいと考えます。
例外は、法改正、制度改定、受験日程、補助金制度のように、一時的に空でも検索意図が続くテーマです。この場合は `200` を維持しつつ、再募集予定、関連制度、対象外条件の説明などを加え、空のまま放置しないでください。ゼロ件を残すなら、空欄の一覧ではなく、次に進めるページへ作り替える必要があります。
公開後三か月で見るべき検査項目と実務判断線
動的URLの設計は、公開時点では終わりません。公開後に、想定どおりのURLだけがクロールされ、想定どおりのURLが正規URLとして採用されるかを見て、初めて設計の良し悪しが分かります。順位だけを追うのでは遅すぎます。最初の90日間は、URLの挙動を確認する期間だと割り切るべきです。
私が最低限見るのは、次の六項目です。
- 検索対象URLのcanonicalが自己参照になっているか
- XMLサイトマップに検索対象外URLが混ざっていないか
- `page=1` や既定値付きURLが `200` で残っていないか
- 内部リンクが派生URLを押していないか
- Search Consoleで正規URLの採用先が想定どおりか
- サーバーログで主要カテゴリと詳細ページへの巡回が全体の60%以上を占めているか
公開後の確認タイミングも固定した方がよいでしょう。
- 公開後1週間: canonical、内部リンク、サイトマップ、ステータスコードの基本点検
- 公開後2〜4週間: Search Consoleで正規URLの採用先と重複除外の傾向を確認
- 公開後30〜90日: クロール統計と主要ページの再クロール頻度を確認し、許可条件の修正要否を判断
ここで役立つのが、URLを個別ではなく群で見る方法です。空条件URL、既定値付きURL、並び替えURL、順序違いURL、UTM付きURL、存在しないページ番号。この六群を毎回同じ方法で検査すると、再発をすぐ見つけられます。私は各群10本ずつ、合計60本前後を固定観測する運用を勧めます。全部を見る必要はありません。再発しやすい代表パターンを見る方が早いからです。
Search Consoleだけで足りない場合は、サーバーログも見てください。重要なのは件数ではなく割合です。主要カテゴリと詳細ページへの巡回が全体の6〜7割に収まり、並び替えや計測系URLへの巡回が2割未満なら、まず合格。逆に、不要な派生URLへの巡回が3割を超えているなら、入口制御かサイトマップの整理がまだ甘いと判断すべきです。
動的URLは、担当者交代や機能追加で壊れやすい領域です。だからこそ、実装時の口頭説明だけで終わらせてはいけません。JPSM SEO 編集事業部でも、URLルールを文章で残し、開発、分析、編集の全担当が同じ基準で見られる状態を作っています。タグや設定より、判断基準の共有の方が長持ちします。
明日から着手するための優先順位と実行手順
動的URLパラメータのSEO設計で成果を出したいなら、最初にやることは明快です。今あるURLをすべて肯定しないこと。便利だから残す、過去に作ったから残す、広告で使ったから残す。そうした発想をやめ、検索対象として残す理由を一つずつ説明できるURLだけを残してください。
着手順は次の四段階で十分です。
- まず現行の一覧URLを洗い出し、`残す` `残さない` `存在しない条件は404/410` の三つに分類する
- 次に、検索対象として残すURLだけで許可表を作り、既定値、省略形、順序違いを通常URLへ統合する
- その後、内部リンク、サイトマップ、構造化データ、canonicalの出力元を同じURL生成ルールへそろえる
- 公開後90日までは、Search Consoleとログで派生URLの再増殖がないか確認する
実務で使いやすいよう、最後にチェックリストを置いておきます。
- 検索対象として残す条件ページを20〜30本までに仮置きしたか
- 月間検索需要、掲載差分、恒常リンクの三条件で採否を決めたか
- `page=1` と既定値付きURLを通常URLへ統合したか
- 並び替え、表示件数、UTM、セッション系URLを内部リンクから外したか
- XMLサイトマップに検索対象URLだけを出しているか
- ゼロ件ページを残す条件と `404/410` の条件を文章で決めたか
- 公開後1週、4週、12週の確認担当と確認項目を決めたか
ここまで決めれば、動的URLは「SEOに弱い仕様」ではなく、検索意図に合わせて伸ばせる公開資産へ変わります。逆に、残す理由を言えないURLを増やし続ける運用は、今すぐ止めるべきです。
明日やることは一つで足ります。Search Console とサイトマップ、主要テンプレートの内部リンクを見ながら、現在の条件URLを30本だけ表に書き出し、各URLに `残す理由` を一行で付けてください。書けないURLは、その時点で検索対象から外す候補です。
