Раньше ссылка была простой: один URL — одно место назначения. brand.com/sale вёл всех на одну и ту же страницу, и долгое время этого хватало.
Сегодня одна ссылка часто должна вести разных людей в разные места: испанца из Мадрида с айфона — на оффер на испанском, немца с компьютера — на немецкий лендинг, читателя вашей рассылки — сразу на оплату. Один URL — несколько мест назначения. Это и есть smart-link.
Обычный 301-редирект на статичный URL подходит для переезда с домена на домен и почти ни для чего больше. Когда один человек должен видеть одно, а другой — другое, нужен smart-link: маршрутизация по нескольким признакам посетителя плюс основной адрес для тех, кто не подошёл ни под одно правило.
Когда 301/302 перестаёт справляться
Типичные случаи, где «один URL — один редирект» перестаёт работать:
- Локализованный магазин. Shopify на 12 стран. Хочется, чтобы
shop.com/promoмексиканцу открылmx.shop.com/promo, испанцу —es.shop.com/promo, остальным —en.shop.com/promo. Раздавать партнёрам двенадцать отдельных ссылок — путь к ошибкам. - Автор с одной ссылкой в профиле. В профиль Instagram можно вставить ровно одну ссылку. А офферов у вас пять, и хочется разводить посетителей по стране и устройству.
- A/B-тест лендинга. Два варианта посадочной страницы. Хочется делить трафик с одной и той же ссылки пополам и сравнивать результат.
- Фильтрация ботов. Парсеры и боты из дата-центров уходят на отдельную страницу, а не на оффер, и не портят статистику.
- Кампания с UTM. Пользователь пришёл с
utm_source=newsletter— ему персональная скидка. Сutm_source=facebook— обычная цена. Одна ссылка, разный опыт. - Переходный период переезда. Магазин ещё на старом домене, но 30% страниц уже на новом. Хочется, чтобы старые URL уводили на новые, а новые открывались напрямую.
В каждом из этих сценариев можно выкрутиться JavaScript-ом на лендинге («определить язык, перебросить через window.location»). Но тогда:
- поисковики видят два перехода подряд, из-за чего могут пострадать SEO и Core Web Vitals;
- посетитель сначала загружает одну страницу, потом другую, на это уходит время, и часть людей уходит, не дождавшись;
- у тех, у кого отключён JavaScript, ничего не работает: таких немного, но они есть.
Шесть измерений, по которым маршрутизируют
Почти любой smart-link собирается из комбинации этих шести признаков:
-
Гео. Самое частое — страна по IP. На уровне страны хорошие базы обычно верны, на уровне города ошибаются чаще. Подойдут
MaxMind GeoLite2,IP2Locationи подобные. Помните: у посетителя с VPN или прокси страна определяется по выходному узлу, а не по тому, где он находится на самом деле. -
Устройство. Компьютер, телефон, планшет; iOS или Android; иногда — конкретная модель. Определяется по
User-Agent, но в 2026-м это уже ненадёжный источник — Apple и Chrome намеренно его урезают. Дополняйте его заголовкамиSec-CH-UAи шириной экрана. -
Язык. Заголовок
Accept-Languageот браузера. Звучит просто, но пользователь из Германии с английской macOS пришлётen-US, de;q=0.9. Кому показывать английский, а кому немецкий — зависит от того, кому вы хотите продать. - Источник трафика. UTM-метки, реферер, click-id. «Пришёл из рассылки» → одно. «Пришёл из Google Ads» → другое. «Пришёл из поиска» → третье.
- Время. День недели и час. Если вы доставляете еду — в обед ведите на лендинг с обедами, вечером — с ужинами. Для таких предложений время может решить результат. TDS.SO считает день недели и время по UTC.
- Случайное распределение (A/B). Трафик делится между вариантами. Хорошо, если один и тот же человек при повторном заходе видит тот же вариант: иначе сравнение получается грязным.
Не подключайте сразу все шесть измерений на первой же кампании: правил становится несколько десятков, разбираться в них трудно, про основной адрес забывают. Начните с двух, гео и источника трафика, они закрывают самые частые случаи. Остальное добавляйте, когда понадобится.
Основной адрес: что делать, когда правило не сработало
Частая ошибка новичков — забыть про основной адрес. Пример: вы настроили «MX → mx.shop.com, ES → es.shop.com». Заходит посетитель из Украины. Куда его отправить? Если вы этого не предусмотрели, он получит 404 или переход в никуда.
Правильный smart-link — это упорядоченная цепочка правил, в конце которой всегда стоит основной адрес. Условный конфиг:
rules:
- if: visitor.is_bot
redirect: "https://shop.com/about" # страница для ботов, проверяется первой
- if: geo.country == "MX"
redirect: "https://mx.shop.com/promo"
- if: geo.country == "ES" or accept_lang has "es"
redirect: "https://es.shop.com/promo"
- default: # основной адрес
redirect: "https://en.shop.com/promo"Что здесь важно:
- правила проверяются по порядку — выигрывает первое совпавшее;
- проверка на бота стоит первой: иначе бот из Мексики совпадёт с правилом MX и дойдёт до оффера;
- основной адрес есть всегда. Без него посетитель, который не подошёл ни под одно правило, остаётся ни с чем.
Когда «глупый» 301/302 — это правильное решение
Smart-link подходит не всегда. В трёх случаях обычный редирект в nginx лучше:
- Постоянный переезд домена. Старый сайт → новый, навсегда. Тут нужен честный 301, чтобы поисковики перенесли старые адреса на новые. Разные ответы разным посетителям здесь только мешают.
- Один адрес на одну каноническую страницу. Если вам нужно просто
/old → /newбез разделения по аудитории — не усложняйте. - Когда статистика не нужна. Smart-link имеет смысл, когда вы смотрите статистику переходов и делаете по ней выводы. Если ссылка нужна один раз и навсегда — 302 в nginx настраивается за полминуты.
Как это выглядит в TDS.SO
В TDS.SO smart-link собирается в интерфейсе, без правки конфигов. В правилах распределения ссылки или шаблона вы добавляете условия сверху вниз — страна, устройство, ОС, браузер, язык, реферер, GET-параметр, день недели, время — и для каждого указываете адрес назначения. Посетитель, который не подошёл ни под одно правило, уходит на основной адрес ссылки. Если указать несколько адресов через |, трафик делится между ними поровну.
Фильтр проверяет ботов до правил. Посетители, которых он отметил как ботов, уходят на страницу по умолчанию для нецелевого трафика, которую вы выбираете сами, а не на оффер. Ссылка работает на вашем собственном домене, например go.brand.com. Домен направляется на отдельный недорогой VPS, куда одной командой ставится лёгкий прокси, или покупается готовым у продавцов. Свой трекер-сервер при этом не нужен.
В статистике по каждому клику видно страну, город, устройство, источник, признак бота и адрес, куда ушёл посетитель. Это работает без сторонних счётчиков, что удобно, если ссылка стоит в рассылке или в профиле, где UTM-метки могут потеряться.
Вывод
Обычный редирект по-прежнему подходит для случая «один адрес в один», но не может показать разным посетителям разные страницы. Ссылка должна знать о посетителе хотя бы две-три вещи: откуда он, с какого устройства и что ему предложить. Без этого каждый посетитель видит одну и ту же страницу, подходит она ему или нет.
Начните с двух правил — гео и источника трафика. Проверьте основной адрес. Неделю посмотрите на статистику. Дальше станет понятно, какие из остальных четырёх измерений вам действительно нужны.
Гайды и разборы о маршрутизации, фильтрации ботов и трекинге от команды TDS.SO.
Все статьи автора