URL の文字数制限とベストプラクティス
URL の長さには、ブラウザやサーバーごとに異なる制限があります。RFC 2616 では URL の長さに明確な上限を定めていませんが、実装上の制約を理解しておかないと、リンク切れや SEO 上の不利益を招く可能性があります。本記事では、URL の文字数制限と設計のベストプラクティスを解説します。
ブラウザ・サーバー別の URL 文字数制限
| 環境 | URL 上限 | 備考 |
|---|---|---|
| Google Chrome | 2,097,152 文字 | 実質的にほぼ無制限 |
| Mozilla Firefox | 65,536 文字 | 超過するとアドレスバーで切り詰め |
| Safari | 80,000 文字以上 | 明確な上限は非公開 |
| Microsoft Edge | 2,097,152 文字 | Chromium ベースで Chrome と同等 |
| Internet Explorer 11 | 2,083 文字 | レガシー環境での制約 |
| Apache (デフォルト) | 8,190 バイト | LimitRequestLine で変更可能 |
| Nginx (デフォルト) | 4,096 バイト | large_client_header_buffers で調整 |
| IIS | 16,384 文字 | レジストリ設定で変更可能 |
| Cloudflare | 32,768 バイト | 超過すると 414 エラー |
SEO に最適な URL の長さ
Google は URL の長さを直接的なランキング要因としていませんが、短く意味のある URL はクリック率やユーザー体験に好影響を与えます。検索結果に表示される URL は約 60 〜 70 文字で切り詰められるため、パス部分は 60 文字以内に収めるのが理想です。
URL のパスにはキーワードを含め、単語の区切りにはハイフン (-) を使用します。アンダースコア (_) は Google が単語の区切りとして認識しないため避けましょう。ディレクトリ階層は 3 階層以内に抑え、不要なパラメータやセッション ID を URL に含めない設計が推奨されます。
URL エンコーディングと文字数の関係
URL に日本語を含める場合、UTF-8 でエンコードされるため文字数が大幅に増加します。日本語 1 文字は 3 バイトの UTF-8 で表現され、パーセントエンコーディングにより 9 文字 (例: %E6%96%87) に展開されます。10 文字の日本語パスは、エンコード後に 90 文字になる計算です。
この膨張を考慮すると、日本語を URL パスに使用する場合はできるだけ短い表現を選ぶか、英語のスラッグを採用するほうが安全です。クエリパラメータに日本語を含める場合も同様で、検索キーワードなどは URL 全体の長さに注意が必要です。
クエリパラメータの制限と設計
クエリパラメータ (?key=value&key2=value2) は URL の一部としてカウントされます。パラメータが増えるほど URL は長くなり、サーバー側の上限に達するリスクが高まります。特に検索フィルターやトラッキングパラメータが多い場合は注意が必要です。
GET リクエストで大量のパラメータを送信する設計は避け、複雑な条件は POST リクエストのボディに移行することを検討しましょう。UTM パラメータなどのトラッキング用途では、utm_source、utm_medium、utm_campaign の 3 つで合計 100 文字以内に収めるのが実用的です。
実務での推奨ガイドライン
ブラウザやサーバーの制限を総合すると、URL 全体を 2,000 文字以内に収めるのが安全な基準です。これは最も制限の厳しい Internet Explorer 11 の上限 (2,083 文字) を下回り、ほぼすべての環境で問題なく動作します。
API のエンドポイント設計では、リソースの識別子 (UUID など) が 36 文字を占めることを考慮し、ベース URL とパスの合計を 200 文字以内に設計すると余裕があります。リダイレクトチェーンでは各段階で URL が変わるため、最終的な URL が制限内に収まることも確認しましょう。
まとめ
URL の文字数制限はブラウザやサーバーによって異なりますが、2,000 文字以内を目安にすれば実用上の問題はありません。SEO の観点ではパス部分を 60 文字以内に抑え、日本語の URL エンコーディングによる膨張にも注意が必要です。URL の文字数を正確に把握したいときは、文字カウンタスでエンコード前後の長さを確認してみてください。