メインコンテンツへ
短.be

コンテンツネゴシエーション

クライアントとサーバーが HTTP ヘッダーを通じて、最適なコンテンツ形式 (言語、フォーマット、エンコーディング) を交渉する仕組み。

2026 年 10 月 16 日 / 約 2 分で読めます

リダイレクト

コンテンツネゴシエーション (Content Negotiation) とは、HTTP 通信においてクライアント (ブラウザー) とサーバーが、リクエストされたリソースの最適な表現形式を交渉する仕組みです。同じ URL に対して、ユーザーの言語設定、デバイス、対応フォーマットに応じて異なるコンテンツを返すことができます。

コンテンツネゴシエーションは主に HTTP リクエストヘッダーを通じて行われます。Accept ヘッダー (対応するメディアタイプ: text/html、application/json など)、Accept-Language ヘッダー (希望する言語: ja、en-US など)、Accept-Encoding ヘッダー (対応する圧縮方式: gzip、br など) が代表的です。いずれのヘッダーも値に q を添えて優先度を示せます。Accept-Encoding: br, gzip;q=0.8 は br を第一希望とし、非対応なら gzip でよいという意味になります。サーバーがこれらのヘッダーを見て応答を変える場合は、判断に使ったヘッダー名を Vary で返す必要があります。Vary: Accept-Language を付け忘れると、キャッシュや CDN が最初に届いた言語の応答を後続の利用者にも配ってしまいます。

多言語サイトでのコンテンツネゴシエーションは、短縮 URL と密接に関わります。同じ短縮 URL をクリックしても、ユーザーのブラウザー言語設定に応じて日本語ページや英語ページにリダイレクトする実装が可能です。ただし、SEO の観点では、言語ごとに異なる URL を持ち、hreflang タグで関連付ける方が推奨されます。コンテンツネゴシエーションによる言語切り替えは、検索エンジンが各言語版を正しくインデックスできない場合があるためです。Google も、Cookie やブラウザー設定で表示を切り替えるのではなく言語版ごとに別の URL を用意する方法を案内しており、ある言語版から別の言語版へ自動的にリダイレクトすることは避けるよう求めています。自動リダイレクトは、利用者と検索エンジンの双方がすべての版に到達できなくなる原因になります。Google のクローラーはリクエストに Accept-Language を付けずに巡回するため、このヘッダーだけで表示を切り替えると既定の言語版しか読み取られません。IP アドレスから地域を推定して内容を変える方法も避けるよう案内されています。

API の設計でもコンテンツネゴシエーションは重要です。短縮 URL サービスの API が、Accept ヘッダーに応じて JSON または XML でレスポンスを返す実装は一般的です。同じリソースに対して複数の表現形式を用意しておくと、利用側は自分が扱える形式を選べます。ただし、どの表現を返すかを選ぶアルゴリズムは HTTP の仕様では定められておらず、サーバーの実装に委ねられています。要求された形式に対応できないときに 406 (Not Acceptable) を返すか、ヘッダーを無視して既定の形式を返すかも実装側の判断になります。

コンテンツネゴシエーションには、サーバー駆動型 (サーバーがリクエストヘッダーを見て判断) とエージェント駆動型 (サーバーが選択肢を提示し、クライアントが選択) の 2 種類があります。HTTP の仕様では前者を proactive negotiation、後者を reactive negotiation と呼びます。実際に使われるのは前者が中心ですが、ヘッダーからの推測が常にある程度は恣意的になるという弱点と引き換えです。後者が広まらなかったのは、選択肢を提示するページの形式が仕様で定められておらず選択を自動化できないことと、本来のリソースを取得するまでに往復が 1 回増えることが理由です。

この記事は役に立ちましたか?

関連用語

HTTP ヘッダー

HTTP リクエストやレスポンスに付随するメタ情報。キャッシュ制御、認証、リダイレクト先の指定などに使われる。

HTTP ステータスコード

Web サーバーがクライアントに返す 3 桁の数値コード。リクエストの処理結果を示し、リダイレクトやエラーの種類を識別する。

hreflang

多言語サイトで各言語版ページの関係性を検索エンジンに伝える HTML 属性。適切な言語のページを検索結果に表示させる。

国際 SEO

多言語 / 多地域対応の Web サイトにおける検索エンジン最適化戦略。 hreflang 設定や URL 構造の設計が核となる。

サーバーサイドリダイレクト

Web サーバーが HTTP レスポンスヘッダーで転送先を指定するリダイレクト方式。 SEO に最も適した標準的な転送手法。

パーセントエンコーディング

URL エンコーディングの正式名称。 RFC 3986 で定義された、URL 内の非 ASCII 文字や予約文字の表現方法。

関連記事

301 リダイレクトと 302 リダイレクトの違い - 短縮 URL に最適な転送方式の選び方

301 (恒久) と 302 (一時) リダイレクトの違いを SEO とユーザー体験の観点から解説。短縮 URL サービスがどちらを採用すべきかの判断基準を紹介します。

URL 短縮の仕組み - 301 リダイレクトと Base62 エンコードを図解で解説

URL 短縮サービスの技術的な仕組みを図解で解説。301 リダイレクト、Base62 エンコード、データベース設計の基本を初心者にもわかりやすく紹介します。

URL は言語の壁を超えられるか - 日本語 URL、アラビア語ドメイン、多言語インターネットの課題

URL は英語圏のために設計されました。日本語やアラビア語のドメイン名は技術的に可能ですが、実用上の課題が山積しています。多言語インターネットにおける URL の現状と未来を紹介します。

よくある質問

コンテンツネゴシエーションで言語を自動切り替えすべきですか?
ユーザー体験としては便利ですが、SEO の観点では注意が必要です。検索エンジンが各言語版を正しくインデックスできない場合があるため、言語ごとに異なる URL を持ち、hreflang タグで関連付ける方が推奨されます。加えて Accept-Language はブラウザーやシステムの設定を反映しただけの値で、その利用者が今読みたい言語を必ず示すとは限りません。自動判定を使うならサイトの入口ページに限り、表示された言語を利用者自身が切り替えられる手段を必ず併せて用意します。
API でコンテンツネゴシエーションを実装するには?
リクエストの Accept ヘッダーを解析し、application/json なら JSON、application/xml なら XML でレスポンスを返します。対応していないフォーマットが要求された場合の扱いは 1 つに決まっておらず、HTTP 406 (Not Acceptable) を返す方法と、ヘッダーを無視して既定の形式を返す方法のどちらも仕様上は許されます。利用側にとっては何らかの応答が返る方が扱いやすいため、既定形式を返す実装も少なくありません。判断に使ったヘッダーは Vary: Accept として応答に含めます。
Accept-Language ヘッダーはどのように設定されますか?
ブラウザーの言語設定に基づいて自動的に送信されます。たとえば日本語環境のブラウザーは「Accept-Language: ja,en-US;q=0.9,en;q=0.8」のように、優先度付きで複数の言語を送信します。

知識を、実際のリンクで。

無料で URL を短縮する