ジオリダイレクト:国別に訪問者をリダイレクトする方法(SEOに安全)

2023年10月5日
14 分読
ジオリダイレクト:国別に訪問者をリダイレクトする方法(SEOに安全)

直接回答

geoリダイレクト(国別リダイレクト)は、訪問者のIPアドレスがどの国から来ているように見えるかに基づいて、別のURLへ送ります。CDNやホストで設定できます。たとえば、Cloudflareのip.src.countryを使ったRedirect Rule、Country=deを指定したNetlifyの_redirects行、あるいは数行のミドルウェアなどです。SEOの観点では、GoogleはIPに基づいて訪問者(およびGooglebot)を強制的に別バージョンへ飛ばすことを推奨していません。各国版はそれぞれ独自のURLに置き、hreflangで相互に結び、代わりにバナーでローカル版を提案するのがよいです。もしIPでリダイレクトするなら、302を使い、入口ページのみに限定し、誰かが直接開いた国別URLからは決して別の場所へリダイレクトしないでください。mybrand.de のような自分で所有する国別ドメインは別のケースで、対応するセクション(mybrand.com/de/)への単純な301は安全です。

「国ごとに訪問者をリダイレクトする」という意味は、実はまったく異なる2つのことを指す場合があります。1つは固定リダイレクトで、mybrand.de 上のすべてを、訪問者に関係なく mybrand.com/de/ に送るものです。もう1つはgeoリダイレクトで、同じURLが、IPアドレスに基づいてドイツの訪問者を /de/ に、フランスの訪問者を /fr/ に送るものです。前者は検索エンジンが問題なく扱える通常のリダイレクトです。後者は、人やクローラーがどこにいるように見えるかによって見える内容が変わるため、そこで多くのSEO問題が発生します。

このガイドでは両方を扱います。IPベースのリダイレクトについてGoogleが何と言っているか、geoリダイレクトを安全に保つためのルール、Cloudflare・Netlify・Vercel・Nginxでの設定方法、リダイレクトせずにローカルコンテンツを表示する方法、そして国別ドメインを適切なセクションへ向ける方法まで解説します。

geoリダイレクト、国別リダイレクト、IPリダイレクト:用語の意味#

  • geoリダイレクト / IPベースのリダイレクト: サーバー(またはCDN)が訪問者のIPアドレスをジオロケーションデータベースで照会し、DEやFRのような国コードを取得して、その国向けに選ばれたURLへリダイレクトします。
  • 言語リダイレクト: 考え方は同じですが、IPアドレスではなくブラウザの Accept-Language ヘッダーに基づきます。
  • 国別ドメインのリダイレクト: 自分で所有する ccTLD(mybrand.de、mybrand.fr)が、固定の送信先、通常はメインサイトの対応するセクションへリダイレクトします。訪問者をまったく参照しません。
Three ways to send visitors to their country version: a fixed 301 from a country domain to a section, a 302 geo redirect by IP, and a suggestion banner that lets the visitor choose

IPベースのリダイレクトはSEOに悪いのか?#

なり得ます。検索エンジンは訪問者の国からクロールするわけではないからです。Googleのドキュメントはこの点を明確に述べています:

  • Googlebot は、米国ベースの IP アドレスに加えて、米国外に基づく IP アドレスでもクロールします[1]。また、Accept-Language ヘッダーなしでリクエストを送信します。IP や言語で版を選ぶリダイレクトでは、クローラーに 1 つの版しか表示されないことがあります。
  • Google は多地域向けガイドで、ユーザーをある言語版から別の言語版へ自動的にリダイレクトしないように[2]と述べており、IP 位置情報は「判定が難しく、一般的に信頼できない」ため、コンテンツの適応に IP 分析を使わないよう推奨しています。
  • Google は、言語版または国版ごとに個別の URL を用意し、各版どうしをリンクでつなぎ、さらにどの URL がどのロケール向けかを Google に伝える hreflang 注釈[3]を付けることを推奨しています。

したがって、ジオリダイレクト自体がペナルティになるわけではありませんが、雑な設定だと Google からページが見えなくなり、旅行者や VPN 利用者を誤った店舗に送り、別の版を見たい人を閉じ込めてしまう可能性があります。リダイレクトがランキングに与える一般的な影響については、リダイレクトの種類と SEO への影響のガイドをご覧ください。

それでも国別にリダイレクトするなら: SEO を安全に保つ 6 つのルール#

  • 301 ではなく、一時的なリダイレクト(302 または 307)を使ってください。遷移先は訪問者によって変わるため移動は恒久的ではなく、ブラウザは 301 をキャッシュします。301 と 302 の比較ガイドで違いを説明しています。
  • リダイレクトするのは入口だけにし、通常はホームページに限定してください。たとえば、ドイツの読者に共有された mybrand.com/fr/ へのリンクのように、直接開かれた国別 URL から人を別ページへリダイレクトしないでください。
  • 各国版を必ず到達可能にし、リンクも設定してください。すべてのページに、目に見える国または言語の切り替え機能を追加します。
  • 各版に hreflang を追加し、対象国以外の訪問者に表示するページには x-default も追加してください。
  • 訪問者の選択は cookie に記憶し、次回の訪問では IP が別のことを示していても、その選択を尊重してください。
  • Googlebot を、その場所から来る他の訪問者と同じように扱ってください。クローラーにユーザーとは異なるものを見せるのはクローキングです。

国ごとにウェブサイトの内容をリダイレクトせずに変更する方法#

多くの場合、「訪問者の国に基づいてウェブサイトの内容をどう変えるか」へのより良い答えは、そもそもリダイレクトしないことです。

  • 提案バナー: 訪問者が求めたページを読み込み、「ドイツにいるようですね。ドイツ版サイトへ移動しますか?」という表示と、ボタンおよび「ここにとどまる」オプションを出します。これは、他のバージョンへリンクし、ユーザーに切り替えを任せるという Google のアドバイスに沿っており、クローラーから URL を隠しません。
  • 同じ URL 上の小さなローカル要素: 主要コンテンツは全員に同じままにしつつ、価格を現地通貨で表示したり、地域の配送に関する注意書きを出したりします。Google は、地域に応じて変化するページを「ロケール適応型」と呼び、すべてのバリエーションを認識できるとは限らないと警告しています。そのため、インデックスさせたい内容は各自の URL に置いてください。
  • hreflang を使った国別 URL の分離: /de/、/fr/、または de.mybrand.com など、それぞれを個別にインデックス可能にしておけば、検索は人々を直接その言語版へ送るため、リダイレクトは不要です。

国別リダイレクトの設定方法#

以下の例ではホームページのみを 302 でリダイレクトします。国コード(ISO 3166-1 alpha-2、例: DE、FR、GB)とパスは自分のサイトに合わせて調整してください。事実は 2026 年 10 月時点で各ベンダーのドキュメントを確認済みです。

Cloudflare: 訪問者の国に基づくリダイレクト ルール#

ドメインが Cloudflare 経由でプロキシされている場合は、カスタムフィルター式と動的な転送先を使って、リダイレクト ルール(単一のリダイレクト)を作成します。Cloudflare は訪問者の国を ip.src.country として公開しています。Cloudflare 自身の例[4]では、GB と FR からホームページに来た訪問者を国別サブドメインへ送っています:

text# 受信リクエストが一致する場合(カスタムフィルター式)
(ip.src.country eq "GB" or ip.src.country eq "FR") and http.request.uri.path eq "/"

# Then: 動的リダイレクト、ターゲット URL 式
lower(concat("https://", ip.src.country, ".example.com"))

# ステータスコード: Cloudflare の例では 301 を使用していますが、ジオリダイレクトには 302 を選択してください

Netlify: _redirects における国条件#

Netlify は _redirects ファイル内の国と言語の条件[5] を読み取ります。国コードはスペースなしでカンマ区切りにし、訪問者は nf_country Cookie を使って検出された国を上書きできます。これが、スイッチャーの選択を維持する方法です:

text# ドイツまたはオーストリアの訪問者がホームページを開くと /de/ に移動
/  /de/  302  Country=de,at

# フランスの訪問者は /fr/ に移動
/  /fr/  302  Country=fr

Vercel: geolocation() を使ったルーティング Middleware#

Vercel では、プロジェクトルートの middleware.ts ファイルが各リクエストの前に実行され、@vercel/functions の geolocation() ヘルパー[6] が訪問者の国を返します。Response.redirect() は既定で 302 を送信します。ローカル開発中は geolocation は設定されないため、デプロイ環境でテストしてください:

typescriptimport { geolocation, next } from '@vercel/functions';

export const config = { matcher: '/' }; // ホームページのみ

const SITES: Record<string, string> = { DE: '/de/', AT: '/de/', FR: '/fr/' };

export default function middleware(request: Request) {
  // 訪問者が国セレクターで既に行った選択を尊重する
  if (request.headers.get('cookie')?.includes('country_choice=')) return next();

  const { country } = geolocation(request);
  const path = country ? SITES[country] : undefined;
  if (path) return Response.redirect(new URL(path, request.url), 302);
  return next();
}

Nginx: GeoIP2 モジュールと MaxMind データベース#

Nginx にはサードパーティの ngx_http_geoip2_module[7] と、MaxMind GeoLite2-Country のような国データベース(アカウントがあれば無料)が必要です。国コードをパスにマッピングし、ホームページのみをリダイレクトします:

nginx# http {} ブロック
geoip2 /etc/nginx/GeoLite2-Country.mmdb {
    $geoip2_country_code default=US country iso_code;
}
map $geoip2_country_code $country_home {
    default "";
    DE /de/;
    AT /de/;
    FR /fr/;
}

# server {} ブロック
location = / {
    if ($country_home) { return 302 $country_home; }
    # それ以外はデフォルトのホームページを表示
}

どのプラットフォームを使っていても、信頼する前に複数の国からテストしてください。VPN、海外の同僚、またはリモートチェックを使いましょう。無料のリダイレクト速度テストでは、ステータスコード、URLの遷移先、HTTPSが有効かどうかを、ワシントン、フランクフルト、東京から計測して表示します。何かおかしい場合は、うまく動かないリダイレクトに関するガイドで、よくある原因を確認できます。

あなたのリダイレクトは機能していますか? ドメインを入力してください。ステータスコード(301または302)、遷移先、HTTPSが有効かどうか、そしてワシントン、フランクフルト、東京からの応答速度が表示され、過去7日間にテストされたすべてのリダイレクトと比較して順位も確認できます。

リダイレクトをテストする

国別ドメイン:各ccTLDを対応するセクションに向ける#

多くのブランドは、別サイトとして運用していない国別ドメインを所有しています。たとえば、mybrand.de、mybrand.fr、mybrand.com.au です。これは一般的で、RedirHubでは約4件に1件のアカウントが少なくとも1つの国別コードドメインをリダイレクトしています(RedirHubプラットフォームデータ、2026年10月)。これらを使う最もきれいな方法は、ジオリダイレクトではなく、メインサイトの対応するセクションへ固定リダイレクトすることです。

  • mybrand.de と mybrand.at → mybrand.com/de/。パスは保持するので、mybrand.de/kontakt は mybrand.com/de/kontakt に着地します。
  • mybrand.fr → mybrand.com/fr/。以下、各国ごとに同様です。

リダイレクトはURLだけで決まるため、すべての訪問者とすべてのクローラーが同じ結果を受け取ります。そのため、301が適切なコードです。個別の国別サイトを終了して1つのドメインに統合する場合は、サイト移行として扱ってください。すべてを1つのホームページに送るのではなく、各旧URLを新しいページに対応付けます。

RedirHubで国別ドメインをリダイレクトする方法#

RedirHub は訪問者の国でルーティングしません。そのためには、上に示したように CDN またはホストを使用してください。RedirHub が行うのは国ドメイン部分です。つまり、Webサイトのないドメインに対して応答し、パスを保持し、各訪問者の近くにある 130 のグローバルエッジロケーション(PoP)で動作します。ダッシュボードでの設定は次のとおりです:

RedirHub New domain redirect screen: Redirect from mybrand.de and mybrand.at, Redirect to https://mybrand.com/de, 301 · Permanent and Keep the path selected, with What happens previews
  1. RedirHub ダッシュボードで新しいドメインリダイレクトを開始します。
  2. Redirect from に国別ドメインを入力します。たとえば mybrand.de です。
  3. 同じセクションに向かう各ドメインごとに Add another source をクリックします。たとえば mybrand.at です。
  4. Redirect to にセクションを入力します。たとえば https://mybrand.com/de です。
  5. Redirect type では 301 · Permanent のままにします。
  6. Paths では Keep the path を選択します。What happens パネルには、mybrand.de/kontakt が mybrand.com/de/kontakt に移動することが表示されます。
  7. Create redirect をクリックします。
  8. 各ドメインの Connect DNS を開き、Manual を選択し、表示されているレコードを追加します(@ を 3.33.236.10 に向ける A レコードと、rehd-verify= で始まる TXT レコード)。その後、I've made the changes をクリックします。
  9. ドメインが接続済みと表示されたら、redirect speed test で確認します。

ルートと www は 1 つのドメインとして扱われ、HTTPS は 自動 HTTPS により両方に発行・更新されるため、https://www.mybrand.de も動作します。古い国別 URL が多数ある場合は、CSV 一括インポート を使って、それぞれを新しい専用ページにマッピングできます。

CDN 上のジオリダイレクト vs RedirHub 上の国別ドメイン#

CDN またはホスト上でのジオリダイレクトRedirHub 上の国別ドメインリダイレクト
Decides by訪問者の IP の国(またはブラウザ言語)URL: みんなに同じ答え
一般的なステータスコード302 / 307301
ホスティングなしのドメインでも動作そのドメインがその CDN 上にある場合のみはい。DNS とメールはそのままで、ルート/www のレコードだけ変更します
Pathsあなたがルールを決めますパスを維持するか、各旧URLをそれぞれのページにマッピングします。リダイレクトごとに複数のソースドメインに対応します
HTTPS設定によりますルートとwwwの両方で自動的に発行・更新されます
Reporting独自の分析クリック数とユニーク訪問者数を表示し、ボットは除外。DNSは10分ごとに再確認されます
Cost通常はCDNまたはホスティングプランに含まれています月額49ドル(Core)から、14日間の無料トライアル

ドメインがすでにCloudflare、Netlify、またはVercel上にあり、ホームページに対する地理的リダイレクトだけが必要な場合は、上記の標準機能で十分で、追加費用はかかりません。RedirHubが役立つのは、ホスティングのない国別ドメインを適切なセクションへ向ける必要があり、パスやHTTPSもまとめて処理してほしい場合です。

国別リダイレクトでよくある間違い#

  • ジオリダイレクト用の301です。ブラウザにキャッシュされるため、フランスから一度訪れた旅行者は、自宅にいても /fr/ に飛ばされ続けます。
  • エントリーページだけでなく、すべてのURLをリダイレクトしています。共有リンクや検索結果が間違った版に着地してしまいます。
  • 逃げ道がありません。切り替え機能と選択の記憶がなければ、訪問者は希望する版にたどり着けません。
  • hreflang がありません。Googleが検索で別の国のページを表示したり、各版を重複コンテンツとして扱ったりする可能性があります。
  • Googlebot に対して別のコンテンツを返しています。クローラーを検知してリダイレクトを飛ばすのはクローキングです。
  • 国別ドメインをホームページに向けています。パスを維持して、古いリンクが対応するページに届くようにしましょう。

出典

  1. [1]Google Search Central: How Google crawls locale-adaptive pages
  2. [2]Google Search Central: Managing multi-regional and multilingual sites
  3. [3]Google Search Central: Localized versions of your pages
  4. [4]Cloudflare docs: Redirect visitors to country subdomains
  5. [5]Netlify docs: Redirect by country or language
  6. [6]Vercel docs: Routing Middleware API (geolocation)
  7. [7]ngx_http_geoip2_module (GitHub)

よくある質問

ジオリダイレクトとは、訪問者のIPアドレスが属すると見なされる国に基づいて、別のURLへ訪問者を送る仕組みです。たとえば、ドイツからの訪問者には /de/、フランスからの訪問者には /fr/ を表示します。通常は、CDN、ホストのリダイレクトルール、または数行のサーバーコードで設定します。

そうなり得ます。Googlebotはしばしば米国のIPアドレスからクロールし、Accept-Language ヘッダーも付けないため、IPベースまたは言語ベースのリダイレクトは他の国別バージョンを隠してしまう可能性があります。Googleは、言語バージョン間でユーザーを自動的にリダイレクトすることを推奨していません。行う場合は、入口ページだけに302を使い、すべてのバージョンに到達可能な状態を保ち、hreflangを追加してください。

302(または307)です。遷移先は訪問者によって異なるため、この移動は恒久的ではありませんし、ブラウザは301をキャッシュします。mybrand.de から mybrand.com/de/ のように、全員に同じで固定のリダイレクトの場合のみ301を使ってください。

ローカル版を提案し、訪問者が選択できるバナーを表示するか、hreflangで関連付けた /de/ や /fr/ のような国別URLを別々に用意します。通貨などの細かな要素は同じURL上で変更できますが、インデックスさせたいものはすべて個別のURLに置くべきです。

カスタムフィルター式を使って Redirect Rule を作成し、ip.src.country を確認します。たとえば、ip.src.country eq "DE" かつ http.request.uri.path eq "/" のように設定し、ターゲットURLを指定して、ジオリダイレクトには 302 を選択します。

いいえ。RedirHub は訪問者の位置情報ではなくURLに基づいてリダイレクトします。mybrand.de のような国別ドメインをメインサイトの特定セクションへ向け、パスを保持しつつHTTPSを処理したい場合に適しています。IPベースのルーティングには、CDNまたはホストを使用してください。

各ドメインを301でメインサイトの対応するセクションへリダイレクトし、パスを保持します(mybrand.de/kontakt を mybrand.com/de/kontakt に)。古いリンクやメールが引き続き機能するように、登録状態のまま維持してください。

Trinayan Chakraborty

TC is the Operations Manager at RedirHub, leading the company’s operational strategy and execution to ensure reliable, scalable redirect infrastructure. He oversees internal processes, cross-team coordination, and platform readiness while supporting customers through complex redirect implementations. With a strong understanding of large-scale domain operations and real-world edge cases, TC plays a key role in aligning product and customer success to deliver stable, high-performance redirection solutions.