Сценарий, который мы слышим почти каждую неделю: Shopify-магазин продаёт в 12 стран, у каждой страны свой поддомен с переведённым каталогом, ценами в локальной валюте и оплатой через локальный платёжный шлюз. Команда раздаёт партнёрам и блогерам 12 разных ссылок — по одной на каждую страну. Один партнёр путает ссылку, второй ставит мексиканскую в немецкий блог, третий вообще даёт прямую en.shop.com везде. Результат: 18% трафика приземляется не туда, конверсия в этих сессиях втрое ниже.
Лечится одним правилом: дайте партнёрам одну ссылку и пусть бэк решает, куда отправлять каждого посетителя. Это и есть geo-редирект. Внешне просто, на деле подводных камней хватает: VPN, нестыковки языка и страны, SEO-последствия. В этом тексте — как сделать без боли.
Geo-редирект на уровне страны работает с точностью 99.6% на хорошей IP-базе. Language fallback через Accept-Language уточняет в спорных случаях. VPN ломает гео в 8% трафика — этот сегмент лучше не редиректить, а показать селектор страны. SEO лечится canonical + hreflang. Для большинства команд достаточно гео-редиректа с явным «Не тот регион?»-баннером на лендинге.
Какая точность у определения страны по IP
Все коммерческие IP-базы (MaxMind GeoIP2, IP2Location, ipinfo, наша внутренняя в TDS) показывают плюс-минус одинаковую точность:
- Страна: 99.6% на хороших дата-сетах. Это значит примерно 1 ошибка на 250 пользователей. Достаточно для коммерческого редиректа.
- Регион (штат/область): 88-92%. Уже заметно хуже. Маркетплейсы используют для налогов и шиппинга, для редиректа обычно избыточно.
- Город: 67-78%. Половина того, что вы прочитали в маркетинговых материалах IP-сервисов. Для редиректа на уровне города почти всегда плохая идея.
Откуда промахи на country-level. Главный источник — мобильные сети. Российский провайдер с межнациональной инфраструктурой выпускает на свет IP-адрес, принадлежащий нидерландскому ASN. Пользователь физически в Москве, а база показывает Нидерланды. Доля таких ситуаций — примерно 2-3% от мобильного трафика, что и даёт 0.4% общего шума.
Вывод: редиректить смело можно по стране. Город — никогда без подстраховки от языка.
Language fallback: когда 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-правиле.
VPN: 8% трафика, который ломает гео
По нашим замерам, в среднем 5-12% посетителей коммерческих сайтов ходят через VPN. На приватных продуктах и medial-сайтах доля выше, на маркетплейсах — ниже. Эти пользователи видят гео не своё. Что с этим делать:
- Не блокируйте. Соблазн «отрезать VPN» появляется регулярно, но это всегда плохая идея: вместе с обходными ушли реальные люди, которые просто хотят приватности. Особенно сильно бьёт на B2B-аудитории.
- Не редиректьте автоматически на «найденную» страну. Лучше — показать селектор «вы в Нидерландах? или выбрать другую» сверху страницы. Так человек подтверждает или меняет вручную.
- Запомните выбор в long-lived cookie на год. Не передёргивайте geo-редирект, если в кукисе уже указано предпочтение.
Хорошие IP-базы помечают VPN-адреса флагом (is_proxy, type=hosting). Используйте этот флаг как сигнал «гео ненадёжно, спроси пользователя», а не как сигнал «отказать».
Команды, которые делают «hard redirect» по гео без баннера-подтверждения, теряют 5-9% возвращаемости. Особенно бьёт по экспатам и людям в командировках: пользователь привык видеть американскую версию, но из Лондона его перебрасывает на британскую — и он считает, что попал не туда. Селектор сверху страницы лечит это в один день.
SEO: canonical и hreflang
Google не любит, когда одна и та же ссылка показывает разный контент разным посетителям — это похоже на cloaking. Чтобы не словить деиндексацию, нужны два технических нюанса:
-
Canonical-URL. Каждая локализованная версия объявляет себя
<link rel="canonical" href="https://es.shop.com/promo">. Google понимает, что испанский лендинг — это полноценная отдельная страница, а не дубликат. -
hreflang. На каждой версии добавляйте список всех остальных:
Googlebot пройдёт по этим ссылкам и поймёт связь между версиями. Без этого ваши региональные версии будут конкурировать за выдачу друг с другом.<link rel="alternate" hreflang="es-ES" href="https://es.shop.com/promo"> <link rel="alternate" hreflang="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 отдельная история: он приходит с американского IP, и если ему сделать редирект на en.shop.com — он проиндексирует только английскую версию. Лучше: краулерам не делать гео-редирект, отдавать им все версии напрямую. В TDS бот-маршрут (см. как работает антибот) пускает Googlebot и Bingbot мимо всех гео-правил.
Когда хватает простой ссылки без редиректа
Geo-редирект — не обязательная вещь. Случаи, когда не надо:
- Магазин на одну страну. Если вы продаёте только в США — лишний слой логики.
- Контентный сайт без локализации. Блог на одном языке, без региональных адаптаций. Браузер посетителя сам разберётся.
- B2B SaaS с глобальным интерфейсом. Если у вас один лендинг на английском для всего мира и одна валюта (USD), редиректить нечего.
- Лендинг под одну рекламную кампанию. Если кампания нацелена на конкретную страну, и в настройках рекламной сети уже стоит таргет — пользователи и так приходят из нужной геолокации.
Как это выглядит в TDS
Geo-редирект в TDS — это правило в кампании со списком условий. Каждое правило: «если страна = X, отправь на URL = Y». Сверху — особый VPN-маршрут (распознан как proxy → показать селектор), внизу — обязательный default. Все срабатывания логируются: какая страна определена, попал ли пользователь в VPN-флаг, какое правило выбрано.
Дополнительные удобства из коробки: автоматический hreflang-генератор для всех ваших версий, флаг «не редиректить ботов», long-lived cookie с подтверждённым выбором страны и аналитика «сколько раз пользователь перешёл вручную в другую страну» — последний показатель честно говорит, насколько ваши гео-предположения совпадают с реальностью.
Вывод
Geo-редирект — это просто, когда сделано правильно. Три практических правила:
- Редиректить по стране (не по городу).
- Не блокировать и не редиректить VPN — показать селектор.
- Не редиректить ботов и помечать canonical/hreflang.
Если у вас два-три рынка и одна валюта — гео можно не делать. Если двенадцать стран и локальные платёжки — без гео-редиректа жизнь становится больно. Особенно если параллельно надо роутить по устройству и источнику — тогда стоит смотреть в сторону полноценного smart-link, где гео — один из шести сигналов.