Типичный сценарий: 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: на продуктах про приватность и в медиа таких больше, на маркетплейсах — меньше. Эти люди видят не своё гео. Что с этим делать:
- Не блокируйте без причины. Соблазн «отрезать VPN» появляется регулярно, но вместе с ботами уходят реальные люди, которые просто берегут приватность. Особенно больно это бьёт по B2B-аудитории.
- Не перебрасывайте насильно на «найденную» страну. Лучше показать на сайте сверху строку «Вы в Нидерландах? Выбрать другую страну». Так человек сам подтверждает или меняет выбор.
- Запомните выбор в cookie на год. Не включайте гео-редирект снова, если в cookie уже записано предпочтение.
Хорошие IP-базы помечают VPN-адреса флагом (is_proxy, type=hosting). Используйте его как сигнал «гео ненадёжно, спроси пользователя», а не как повод отказать.
Жёсткий гео-редирект без строки подтверждения сильнее всего бьёт по экспатам и людям в командировках: человек привык к американской версии, а из Лондона его перебрасывает на британскую — и он думает, что попал не туда. Строку выбора страны сверху страницы можно сделать за день.
SEO: canonical и hreflang
Поисковики настороженно относятся к адресу, который показывает разным посетителям разное, а за подмену контента для поисковиков — когда роботу показывают не то, что видят люди, — могут исключить сайт из выдачи. Чтобы региональные версии выглядели честно, нужны две технические вещи:
-
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="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 отдельная история: он чаще всего приходит с американских 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 совсем, решает отдельная настройка фильтра; если она включена, такие визиты уходят на страницу по умолчанию для нецелевого трафика. В статистике по каждому клику видно определённые страну и город, признак прокси и адрес, куда ушёл посетитель.
Вывод
Гео-редирект — это просто, если сделать его правильно. Три практических правила:
- Редиректить по стране, а не по городу.
- VPN-трафик не блокировать без причины и не перебрасывать насильно — дать выбрать страну на сайте.
- Поисковым роботам гео-редирект не делать, а страницы размечать canonical и hreflang.
Если у вас два-три рынка и одна валюта — гео-редирект можно не делать. Если двенадцать стран и местные способы оплаты — без него жить тяжело. Особенно если параллельно нужно разводить трафик по устройству и источнику: тогда смотрите в сторону полноценного smart-link, где гео — один из шести признаков.