Domain 18 / 225

URL 構造は単純で人間に意味が分かる設計が SEO の基本

URL 構造 の要点

URL 構造はシンプルで人間に意味が分かる形が Google 推奨。単語区切りはハイフン、アンダースコアは避ける。URL は case-sensitive で `/Apple` と `/apple` は別 URL。フラグメント(#)はインデックス対象外で内容変更には使えない

なぜこれを学ぶか

URL 構造の 誤設計はクロール効率を一気に悪化させ、大規模サイトでインデックス漏れを引き起こす。 特に EC のファセットナビゲーション、カレンダー、無限スクロールでは、URL 設計次第で Googlebot が膨大な無駄ページを巡回し、本来クロールしてほしいページにリソースが回らなくなる。

メディア・EC・SaaS のリプレイス、URL 設計の初期決定で必須の知識。

学ばないと起きること

よくある事故被害
URL にアンダースコア(_)を使う単語区切りとして認識されにくく、人間にも検索エンジンにも分かりづらい
URL のフラグメント(#section)でコンテンツを切り替えるフラグメント部分はインデックス対象外、SPA ルーティングで使うとインデックスされない
大文字小文字混在 URL(/Apple/apple)が両方存在別 URL 扱いされて重複コンテンツ、評価分散
ファセットナビゲーション(フィルタ追加で URL が増殖)を放置Googlebot が数百万 URL を巡回、クロール予算を使い果たす
動的カレンダーで未来日 URL が無限生成クローラーが無限ループ、本来のページがインデックスされない
URL パラメータの順序が一定でない同じ内容で複数 URL ができ、重複コンテンツ判定
セッション ID が URL に入る同じページが無数の URL として扱われ、評価分散

学ぶメリット

  • リプレイス時に SEO 観点で URL を設計できる
  • ファセットナビ / カレンダー / 検索結果ページのクロール制御を組める
  • Search Console「クロール統計」で無駄クロールを発見・対処できる
  • 商談で「URL 設計の良し悪しの判断基準」を即答できる

仕組み

クロール可能な URL の必須要件

公式に明記された要件:

要件内容
IETF STD 66 準拠URL の標準仕様に従う、予約文字はパーセントエンコード
フラグメント(#)でコンテンツ切替不可Google は基本的に URL フラグメントをサポートしない
URL パラメータは標準形式?key=value&key=value 形式(= で区切り、& で連結)

これに従わないと Google はサイトを非効率にクロールするか、クロールしない可能性がある。

URL 構造のベストプラクティス

説明的な URL を使う

OKNG
https://example.com/wiki/Aviationhttps://example.com/index.php?topic=42&area=3a5ebc944f41daa6f849f730f1

長い ID 番号より読みやすい単語が推奨。

対象オーディエンスの言語を使う

ドイツ語向け: https://example.com/lebensmittel/pfefferminz
日本語向け: https://example.com/食料品/ペパーミント

非 ASCII 文字はパーセントエンコード(%E9%A3%9F など)でも OK だが、人間可読のためにそのまま記述するのも推奨。

ハイフン(-)で単語を区切る

OKNG
/summer-clothing/filter/summer_clothing/filter(アンダースコア)
/blog/seo-basics/blog/seobasics(連結)

歴史的にアンダースコアはプログラミング言語の関数名(format_date)で「連結する単語」を表すため、Google は単語区切りとしてはハイフンを推奨する。

URL パラメータは少なく

OK: /products/dress?color=red
NG: /products/dress?color=red&utm_source=email&utm_medium=cpc&utm_campaign=spring&session_id=abc123&ref=xyz

不要なパラメータは削除する。utm_* は分析用に必要だが、canonical で正規 URL を指定する。

大文字小文字を一貫させる

URL は case-sensitive。/Apple/apple は別 URL。 サーバー側で同一視するなら、すべて小文字に統一して 301 リダイレクトで揃える。

多地域サイトの URL 設計

構造
ccTLD(国別ドメイン)https://example.de
サブディレクトリ + gTLDhttps://example.com/de/
サブドメインhttps://de.example.com

ccTLD が地域シグナルとして最も強い。サブディレクトリは管理が簡単で多くのケースで実用的。

キー概念

避けるべき URL 構造の問題

ファセットナビゲーション(追加フィルタで URL 増殖)

hotels.example.com/search?category=value
hotels.example.com/search?category=value&beach=1
hotels.example.com/search?category=value&beach=1&fitness=1
hotels.example.com/search?category=value&beach=1&fitness=1&pool=1
...

各組み合わせで別 URL が生成され、組み合わせ爆発で URL 数が無限に。 対処: robots.txt で Disallow: /search?* してクロール除外、または crawling-managing-faceted-navigation ガイドに従う。

無関係なパラメータ

referral: /search?click=6EE2BF1AF6A3D705D5561B7C3564D9C2
session: /search?sessionid=6EE2BF1AF6A3D705D5561B7C3564D9C2
sorting: /results?search_sort=relevance&search_category=25

これらは URL を無限に増やすが、コンテンツは同じ。 対処: クッキーに移行、または robots.txt で除外。

カレンダーの無限 URL

/calendar?d=13&m=8&y=2011
/calendar?d=14&m=8&y=2011
/calendar?d=15&m=8&y=2011
...

未来日も無限に生成される。 対処: 未来日へのリンクに rel="nofollow" を付けるか、robots.txt で Disallow: /calendar?*

壊れた相対リンク

<!-- /category/community/070413/html/FAQ.htm に -->
<a href="../../category/stuff">link</a>

サーバーが存在しないページに 404 を返さないと、無限の URL が生成される(category/community/category/stuff のような)

対処: ルート相対 URL(/category/stuff)を使う。

よくある誤解

よくある誤解実際のところ出典
URL のアンダースコアは Google が単語区切りとして認識違う。歴史的に変数名で使われるため、ハイフンが推奨URL 構造のベスト プラクティス
URL フラグメント(#section)でコンテンツを変えられるGoogle はフラグメントをサポートしない、変えるなら History API同上
URL の大文字小文字は Google が同一視するしない。/Apple/apple は別 URL同上
日本語 URL は SEO 上不利パーセントエンコード(%E9%A3%9F)または直接日本語のどちらでも OK同上
短い URL のほうが上位に出やすいURL 長は直接の順位要因ではない、シンプルさは間接的に有利同上
ファセットナビは Google が自動で重複として処理自動処理されるが、URL 数が多すぎるとクロール予算を消費同上
セッション ID を URL に入れて問題ない同じページが無数の URL になり評価分散、クッキーに移行同上
utm パラメータは canonical 不要canonical でパラメータなし URL を正規指定するのが安全同上

実務での適用

新規サイトの URL 設計

  1. すべて小文字に統一(サーバーで強制)
  2. 単語区切りはハイフン
  3. ID 番号より説明的な単語
  4. 階層は 3-4 段以内(深すぎは避ける)
  5. パラメータは最小限、必要なら canonical で正規化

EC サイトのファセットナビ対策

# robots.txt 例
User-agent: *
Disallow: /search?*
Disallow: /products?*sort=*
Disallow: /products?*color=*&size=*

主要カテゴリは canonical 対象として残し、ファセット組み合わせはクロール除外。

URL 移行時のチェックリスト

  1. すべての旧 URL → 新 URL を 301 リダイレクト
  2. 新 URL が小文字統一・ハイフン区切りになっているか
  3. canonical で新 URL を指定
  4. サイトマップを新 URL で更新
  5. 内部リンクをすべて新 URL に張り替え

トラブル別の対処

症状確認すべきこと
Search Console「クロール統計」で大量の URL がクロールされているファセットナビ / カレンダー / セッション ID の確認、robots.txt 整備
同じ商品が複数 URL でインデックスされている大文字小文字混在、URL パラメータの canonical 未指定
SPA でインデックスされないフラグメント(#)でルーティングしていないか、History API を使う
多言語サイトの言語切替が認識されないhreflang 設定 + ccTLD / サブディレクトリの一貫性

公式ソース

自己テスト

Q1. URL の単語区切りに推奨される文字は?

ハイフン(-)。アンダースコア(_)は歴史的に変数名で使われるため、単語区切りとしては推奨されない

Q2. URL の大文字小文字を Google は同一視するか?

しない。case-sensitive で /Apple/apple は別 URL として扱われる。 サーバー側で小文字統一するか 301 リダイレクトで揃える

Q3. URL フラグメント(`#section`)でコンテンツを変えられるか?

Google は基本的に URL フラグメントをサポートしない。 JavaScript でコンテンツを変える場合は History API を使う

Q4. 日本語 URL(`/食料品/ペパーミント`)は SEO 上不利か?

不利ではない。パーセントエンコード(%E9%A3%9F)または直接日本語のどちらでも Google が処理する

Q5. ファセットナビゲーション(複数フィルタ組み合わせで URL が増殖)の問題は?

組み合わせ爆発で URL 数が無限に増え、Googlebot がクロール予算を使い果たす。 robots.txt で除外するか、専用ガイドに従って制御

Q6. URL に session ID を入れるのは推奨されるか?

推奨されない。同じページが無数の URL として扱われ評価分散する。 セッション管理はクッキーに移行する

Q7. utm パラメータが付いた URL の canonical はどう設定する?

パラメータなしの正規 URL を canonical に指定する。 これで utm 付き URL の評価が正規 URL に集約される

Q8. 多地域サイトの URL 構造で地域シグナルが最も強いのは?

ccTLD(国別ドメイン: example.de)。 ただし管理コストが高いため、サブディレクトリ + gTLD(example.com/de/)も実用的

これらの内容を採点付きで挑戦したい場合は、本ドメインのプロ試験で 5 問形式で確認できる。