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

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

Если коротко

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

Когда 301/302 перестаёт справляться

Классические сценарии, на которых ломается «один URL — один редирект»:

  • Локализованный магазин. Shopify на 12 стран. Хочется, чтобы shop.com/promo мексиканцу открыл mx.shop.com/promo, испанцу — es.shop.com/promo, остальным — en.shop.com/promo. Двенадцать отдельных ссылок раздавать партнёрам — путь к ошибкам.
  • Креатор с одним bio-link. В Instagram bio можно вставить ровно одну ссылку. А офферов у вас пять, и хочется ротировать по гео и устройству.
  • A/B-тест лендинга. Двух вариантов посадочной. Хочется лить 50/50 трафика с одной и той же ссылки и считать конверсию.
  • Защита от ботов. Реальные пользователи идут на оффер, краулеры фейсбука и гугла — на нейтральную белую страницу. Это уже не smart-link в чистом виде, а cloak-маршрутизация, но механика та же.
  • Кампания с UTM. Пользователь пришёл с utm_source=newsletter — ему персональная скидка. С utm_source=facebook — обычная цена. Одна ссылка, разный опыт.
  • Переходный период миграции. Магазин ещё на старом домене, но 30% страниц уже на новом. Хочется, чтобы старые URL уводили на новые, а новые открывались напрямую.

В каждом из этих сценариев можно выкрутиться JavaScript-ом на лендинге («определить язык, перебросить через window.location»). Но это:

  • видно поисковикам как два редиректа подряд — провал по SEO и по Core Web Vitals;
  • видно фейсбуку как «странное поведение» — снижается охват;
  • не работает для людей с заблокированным JS (это меньше 0.5%, но они есть и часто это именно те, чей трафик дороже всего).

Шесть измерений, по которым маршрутизируем

Любой serious smart-link строится из комбинации этих шести сигналов:

  1. Гео. Самое частое — страна по IP. Точность хороших баз — 99.6% на country-level, 88% на city-level. Подойдут MaxMind GeoLite2, IP2Location, наша внутренняя база. Главное помнить: VPN/прокси даёт неверный сигнал примерно в 8% случаев.
  2. Устройство. Десктоп, мобайл, планшет; iOS vs Android; иногда — конкретная модель. Парсится из User-Agent, но в 2026-м UA уже не source of truth — Apple и Chrome намеренно его обрезают. Дополняйте Sec-CH-UA client hints и шириной viewport.
  3. Язык. Заголовок Accept-Language от браузера. Звучит просто, но: пользователь из Германии с английским macOS пришлёт en-US, de;q=0.9. Кому показывать английский, а кому немецкий — зависит от того, кому вы хотите продать.
  4. Источник трафика. UTM-метки, реферер, click-id. «Пришёл из рассылки» → одно. «Пришёл из Google Ads» → другое. «Пришёл с органики» → третье.
  5. Время. Часовой пояс по гео, день недели, час дня. Если вы магазин еды — в обед лить на лендинг с ланчем, вечером — с ужином. Звучит как мелочь, до тех пор пока конверсия не вырастает на 12%.
  6. Случайное распределение (A/B). Веса 70/30, sticky-сегмент по cookie или fingerprint (чтобы один человек всегда видел один вариант). Без sticky — это не A/B, а каша.
Что мы наблюдаем

Команды, которые подключают сразу все шесть измерений на первой же кампании, чаще ошибаются: правил становится 30, дебажить трудно, fallback забыт. Начинайте с двух. Гео + источник трафика обычно дают 80% эффекта от полноценной маршрутизации. Остальное добавляется по факту.

Fallback-цепочка: что делать, когда правило не сработало

Главная ошибка новичков — не подумать про default. Пример: вы настроили «MX → mx.shop.com, ES → es.shop.com». Заходит украинец. Куда его перебрасывать? Если не предусмотрели — он получит 404 или редирект-в-никуда.

Правильный smart-link всегда выглядит как упорядоченная цепочка правил, где последнее — это безусловный fallback. Псевдо-конфиг:

rules:
  - 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"

  - if: device.is_bot
    redirect: "https://shop.com/about"   # белая для краулеров

  - default:
    redirect: "https://en.shop.com/promo"

Что здесь важно:

  • правила проверяются по порядку — первое совпавшее выигрывает;
  • есть явный bot-роут, чтобы краулер не увидел персонализированную страницу и не понял её как cloak;
  • default всегда есть. Без него правило «никогда не падать в null» не выполняется.

Когда «глупый» 301/302 — это правильное решение

Smart-link — не панацея. Есть три сценария, где обычный nginx-редирект лучше:

  • Постоянный переезд домена. Старый сайт → новый, навсегда. Тут нужен честный 301, чтобы поисковики переиндексировали. Smart-link выглядит подозрительно для Google.
  • Один URL на одну канonical-страницу. Если у вас просто `/old → /new` без разделения по аудитории — не городите огород.
  • Когда нет логирования и аналитики. Smart-link имеет смысл, когда вы видите статистику переходов и можете на ней учиться. Если ссылка нужна один раз и забыть — 302 в nginx экономит 30 секунд жизни.

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

В TDS smart-link собирается визуально без правки конфигов: добавляете правила сверху вниз в интерфейсе кампании, каждое со своим условием и URL назначения. Внизу — обязательный default. Если хочется, можно подключить custom-домен (go.brand.com) вместо стандартного tds.so/abc — кликабельность брендированных ссылок выше на 30-40% по нашим замерам.

Каждый клик логируется со всеми сработавшими признаками: страна, устройство, источник, выбранное правило. Это даёт честную аналитику без необходимости подключать GA4 или Mixpanel — особенно полезно, если ссылку ставите в рассылку или в bio, где сторонние UTM могут потеряться.

Вывод

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

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