Типичный сценарий: Shopify-магазин продаёт в 12 стран, у каждой страны свой поддомен с переведённым каталогом, ценами в местной валюте и местным платёжным шлюзом. Команда раздаёт партнёрам и блогерам 12 разных ссылок — по одной на страну. Один партнёр путает ссылки, второй ставит мексиканскую в немецкий блог, третий везде даёт прямую en.shop.com. В итоге часть посетителей попадает не в свой регион, и конверсия в таких визитах заметно ниже.

Лечится одним правилом: дайте партнёрам одну ссылку, и пусть сервер решает, куда отправить каждого посетителя. Это и есть гео-редирект. Снаружи всё просто, внутри хватает подводных камней: VPN, расхождение языка и страны, последствия для SEO. В этом тексте — как сделать без боли.

Если коротко

Гео-редирект по стране на хорошей IP-базе ошибается редко. Язык из заголовка Accept-Language помогает в спорных случаях. VPN путает гео — таких посетителей лучше не перебрасывать насильно, а дать им выбрать страну на сайте. Для SEO нужны canonical и hreflang, а поисковому роботу нельзя показывать не то, что видят люди. Большинству команд хватает гео-редиректа и заметной строки «Не тот регион?» на лендинге.

Насколько точно IP показывает страну

Коммерческие IP-базы (MaxMind GeoIP2, IP2Location, ipinfo, SypexGeo) дают примерно одинаковую картину:

  • Страна: ошибки редкие. Для коммерческого редиректа этого достаточно.
  • Регион (штат, область): уже заметно хуже. Интернет-магазины используют его для налогов и доставки, для редиректа он обычно лишний.
  • Город: промахи частые, иногда на десятки километров или в соседний город. Редирект по городу почти всегда плохая идея.

Откуда ошибки на уровне страны. Главный источник — мобильные сети и провайдеры с инфраструктурой в нескольких странах: адрес может числиться за нидерландской сетью, хотя пользователь физически в Москве. Таких случаев немного, но они есть.

Вывод: по стране редиректить можно смело. По городу — только с подстраховкой языком.

Язык: когда IP не помог

Бывает, что страна по IP одна, а пользователь говорит на другом языке. В Швейцарии вообще четыре государственных языка: IP скажет «CH», а заголовок Accept-Language подскажет, на каком языке встречать. Реальные примеры:

  • немец в командировке в Италии (IP=IT, Accept-Language=de-DE);
  • русскоязычный человек в Германии (IP=DE, Accept-Language=ru-RU);
  • англоязычный экспат в Японии (IP=JP, Accept-Language=en-US).

Правило, которое мы рекомендуем: гео определяет валюту и способ оплаты, язык определяет интерфейс. Швейцарец видит швейцарские цены и швейцарскую оплату, но интерфейс — на своём языке.

Заголовок Accept-Language бывает составным:

Accept-Language: de-DE, de;q=0.9, en;q=0.7, *;q=0.5

Здесь пользователь предпочитает немецкий, потом английский. Разбирать заголовок надо в порядке весов (параметр q). На своём сервере это десять строк кода, в TDS.SO — условие «Язык» в правиле.

VPN: трафик, который ломает гео

Заметная часть посетителей коммерческих сайтов ходит через VPN: на продуктах про приватность и в медиа таких больше, на маркетплейсах — меньше. Эти люди видят не своё гео. Что с этим делать:

  1. Не блокируйте без причины. Соблазн «отрезать VPN» появляется регулярно, но вместе с ботами уходят реальные люди, которые просто берегут приватность. Особенно больно это бьёт по B2B-аудитории.
  2. Не перебрасывайте насильно на «найденную» страну. Лучше показать на сайте сверху строку «Вы в Нидерландах? Выбрать другую страну». Так человек сам подтверждает или меняет выбор.
  3. Запомните выбор в cookie на год. Не включайте гео-редирект снова, если в cookie уже записано предпочтение.

Хорошие IP-базы помечают VPN-адреса флагом (is_proxy, type=hosting). Используйте его как сигнал «гео ненадёжно, спроси пользователя», а не как повод отказать.

Совет

Жёсткий гео-редирект без строки подтверждения сильнее всего бьёт по экспатам и людям в командировках: человек привык к американской версии, а из Лондона его перебрасывает на британскую — и он думает, что попал не туда. Строку выбора страны сверху страницы можно сделать за день.

SEO: canonical и hreflang

Поисковики настороженно относятся к адресу, который показывает разным посетителям разное, а за подмену контента для поисковиков — когда роботу показывают не то, что видят люди, — могут исключить сайт из выдачи. Чтобы региональные версии выглядели честно, нужны две технические вещи:

  1. Canonical-URL. Каждая локализованная версия объявляет себя: <link rel="canonical" href="https://es.shop.com/promo">. Google понимает, что испанский лендинг — полноценная отдельная страница, а не дубликат.
  2. hreflang. На каждой версии перечислите все остальные:
    <link rel="alternate" hreflang="es-ES" href="https://es.shop.com/promo">
    <link rel="alternate" hreflang="es-MX" href="https://mx.shop.com/promo">
    <link rel="alternate" hreflang="en" href="https://en.shop.com/promo">
    <link rel="alternate" hreflang="x-default" href="https://en.shop.com/promo">
    Googlebot пройдёт по этим ссылкам и поймёт связь между версиями. Без этого региональные версии будут конкурировать друг с другом в выдаче.

С Googlebot отдельная история: он чаще всего приходит с американских IP, и если перебросить его на en.shop.com, он проиндексирует только английскую версию. Поэтому поисковым роботам гео-редирект не делают: каждую региональную страницу робот должен видеть по её собственному адресу — ровно такой же, какой видят люди.

Учтите это при работе с TDS.SO: антибот относит поисковых роботов к ботам, и они уходят на страницу по умолчанию для нецелевого трафика, а не по гео-правилам. Поэтому ссылка TDS.SO не должна быть адресом, который вы продвигаете в поиске. В выдаче должны стоять сами региональные страницы с canonical и hreflang, а ссылку раздавайте партнёрам и ставьте в рекламу и рассылки.

Когда хватает простой ссылки без редиректа

Гео-редирект — не обязательная вещь. Случаи, когда он не нужен:

  • Магазин на одну страну. Если вы продаёте только в США — это лишний слой логики.
  • Контентный сайт без локализации. Блог на одном языке, без региональных версий. Браузер посетителя сам разберётся.
  • B2B SaaS с единым интерфейсом. Если у вас один лендинг на английском для всего мира и одна валюта (USD), перенаправлять некуда.
  • Лендинг под одну рекламную кампанию. Если в настройках рекламной сети уже стоит таргетинг на конкретную страну, посетители и так приходят из нужного региона.

Как это выглядит в TDS.SO

Гео-редирект в TDS.SO — это правила распределения в ссылке или шаблоне: «если страна = X, отправить на адрес Y». Посетитель, который не подошёл ни под одно правило, уходит на основной адрес ссылки.

Для VPN-трафика в правилах есть условие «Прокси / VPN»: можно завести отдельное правило и отправлять таких посетителей, например, на страницу выбора страны на вашем сайте. Саму страницу выбора TDS.SO не показывает — её делаете вы. Блокировать ли VPN, прокси и Tor совсем, решает отдельная настройка фильтра; если она включена, такие визиты уходят на страницу по умолчанию для нецелевого трафика. В статистике по каждому клику видно определённые страну и город, признак прокси и адрес, куда ушёл посетитель.

Вывод

Гео-редирект — это просто, если сделать его правильно. Три практических правила:

  1. Редиректить по стране, а не по городу.
  2. VPN-трафик не блокировать без причины и не перебрасывать насильно — дать выбрать страну на сайте.
  3. Поисковым роботам гео-редирект не делать, а страницы размечать canonical и hreflang.

Если у вас два-три рынка и одна валюта — гео-редирект можно не делать. Если двенадцать стран и местные способы оплаты — без него жить тяжело. Особенно если параллельно нужно разводить трафик по устройству и источнику: тогда смотрите в сторону полноценного smart-link, где гео — один из шести признаков.