Раньше ссылка была глупой: один URL — одно место назначения. brand.com/sale вёл всех на одну и ту же страницу. В 2010-м этого хватало. В 2026-м — уже нет.

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

Если коротко

«Глупый» 301-редирект на статичный URL хорош, когда вы переезжаете с домена на домен и больше ничего. Как только нужно, чтобы один человек видел одно, а другой — другое, начинается smart-link: маршрутизация по нескольким признакам посетителя плюс основной адрес для тех, кто не подошёл ни под одно правило. Настроить это не сложнее, чем nginx, а задач решается намного больше.

Когда 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 собирается из комбинации этих шести признаков:

  1. Гео. Самое частое — страна по IP. На уровне страны хорошие базы ошибаются редко, на уровне города — заметно чаще. Подойдут MaxMind GeoLite2, IP2Location и подобные. Помните: у посетителя с VPN или прокси страна определяется по выходному узлу, а не по тому, где он находится на самом деле.
  2. Устройство. Компьютер, телефон, планшет; iOS или Android; иногда — конкретная модель. Определяется по User-Agent, но в 2026-м это уже ненадёжный источник — Apple и Chrome намеренно его урезают. Дополняйте его заголовками Sec-CH-UA и шириной экрана.
  3. Язык. Заголовок Accept-Language от браузера. Звучит просто, но пользователь из Германии с английской macOS пришлёт en-US, de;q=0.9. Кому показывать английский, а кому немецкий — зависит от того, кому вы хотите продать.
  4. Источник трафика. UTM-метки, реферер, click-id. «Пришёл из рассылки» → одно. «Пришёл из Google Ads» → другое. «Пришёл из поиска» → третье.
  5. Время. День недели и час. Если вы доставляете еду — в обед ведите на лендинг с обедами, вечером — с ужинами. Звучит как мелочь, но для таких предложений время часто решает.
  6. Случайное распределение (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-метки могут потеряться.

Вывод

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

Начните с двух правил — гео и источника трафика. Проверьте основной адрес. Неделю посмотрите на статистику. Дальше станет понятно, какие из остальных четырёх измерений вам действительно нужны.