5 мин чтенияТуториалы

Короткая ссылка не работает? Диагностируйте ее одной командой

У короткой ссылки, которая выдает 404, предупреждает о сертификате или открывается в одном приложении, но не в другом, есть четыре причины. Прочитайте заголовки ответа и устраните нужную.

Marius Voß
DevRel · edge infra
Короткая ссылка не работает: чтение заголовков ответа короткого URL, чтобы отличить 404 от ошибки сертификата, блокировки в приложении и петли редиректов

Короткая ссылка, которая не работает, ломается одним из четырех способов, и они никак не связаны друг с другом. Выполните curl -sI для нее, и первая строка ответа покажет, какой именно у вас случай:

curl -sI https://s.elido.me/ab12cd

301 с заголовком Location означает, что со ссылкой все в порядке, а проблема дальше по цепочке. 404 означает, что слаг неверный, удален или указан не в том регистре. Ошибка TLS еще до какого-либо HTTP означает, что домен не настроен до конца. А 200 с отображением страницы предупреждения означает, что нечто между вами и ссылкой решило ее не пропускать.

Десять секунд в терминале стоят часа догадок, потому что браузер сворачивает все четыре причины в одну и ту же бесполезную страницу ошибки. В этом материале разобрана каждая причина и ее решение.

Четыре симптома неработающей короткой ссылки с причинами и решениями: 404 от домена, предупреждение о сертификате, блокировка внутри приложения и петля редиректов

404 от короткого домена

Домен ответил, значит, с DNS и TLS все в порядке. Проблема в слаге.

Сначала проверьте регистр. Большинство сокращателей различают регистр в слагах, поэтому /Spring и /spring являются разными ссылками, и существует только одна из них. Если ссылка взята с печатной листовки, подозревайте символы, которые в шрифте без засечек выглядят одинаково: заглавная I, строчная l и цифра 1; заглавная O и ноль. Это самый весомый довод в пользу кастомных бэк-халвов из настоящих слов, а не случайных символов.

Если слаг верный, проверьте, не была ли ссылка удалена или заархивирована, и не задан ли для нее срок действия. Истечение срока действия ссылок и ссылки с самоуничтожением описывает, как ведет себя запланированное истечение срока после срабатывания: ссылка перестает открываться и выглядит точь-в-точь как опечатка для того, кто по ней перешел.

Есть еще один вариант для ссылки, которая раньше работала: гео- или device-правило, которое исключает место, откуда вы тестируете. Умные ссылки маршрутизируют по стране и устройству, и правило без резервного варианта дает 404 всем, кто не попал в список.

Предупреждение о сертификате на кастомном домене

Здесь вообще не происходило ничего HTTP-уровня. Браузер отказал еще во время TLS-рукопожатия, а это значит, что домен начал отвечать раньше, чем появился сертификат.

Практически все случаи сводятся к двум причинам. DNS-запись была добавлена, но проверка так и не завершилась, поэтому сертификат так и не выпустили. Либо домен указали через A-запись, когда провайдер просил CNAME, и проверка, подтверждающая владение доменом, не может завершиться.

Решение - настроить запись именно так, как указано в дашборде, а затем подождать: скорость распространения зависит от предыдущего TTL той записи, что была раньше, поэтому запись, у которой TTL был час, может проясняться до часа. Кастомные домены для коротких ссылок содержит полный разбор DNS и TLS, а TLS для кастомного домена за пять минут описывает благополучный сценарий.

Три этапа, через которые проходит короткая ссылка - DNS, TLS и редирект 301 - и сбой, характерный для каждого этапа

Ссылка работает в браузере, но не в приложении

Ссылка прекрасно открывается из терминала, но обрывается, помечается или молча теряется в Slack, Teams, WhatsApp или на email-шлюзе.

Дело не в самой ссылке. Дело в репутации домена. Бесплатные публичные домены сокращателей делят между собой все, кто ими пользуется, включая фишинговую кампанию, которая работала на одном из них сегодня утром, а поставщики средств безопасности, которые снабжают эти приложения данными, блокируют по домену, а не по слагу.

Никакая настройка не исправит это на общем домене. Решение - собственный домен, где репутация принадлежит только вам и со временем улучшается, а не рушится по случайным причинам. Почему короткие ссылки блокируются в Slack и Teams описывает полный механизм, включая то, что делать, если ваш собственный домен все же оказался помечен.

Email добавляет еще один слой: некоторые продукты безопасности переписывают каждую ссылку в письме, поэтому получатель кликает по URL поставщика, а не по вашему. Вредят ли короткие ссылки доставляемости email-рассылок разбирает это взаимодействие.

Если вы все еще на общем домене, самое время переехать. Настройте брендированный домен на бесплатном плане и перевыпустите ссылки, которые имеют значение.

Петли редиректов и длинные цепочки

curl -sI показывает один переход. Добавьте -L и посчитайте их:

curl -sIL https://s.elido.me/ab12cd | grep -E '^HTTP|^[Ll]ocation'

Две-три строки - это нормально: короткая ссылка делает редирект, а назначение может сделать еще один - с http на https или с apex-домена на www. Стена таких строк означает петлю, и обычная причина - ссылку отредактировали так, что она указывает на страницу, которая сама редиректит обратно на короткий URL. Направьте назначение на финальную страницу, а не на очередной редирект.

Браузеры перестают следовать за редиректами после фиксированного числа переходов и показывают обобщенную страницу "слишком много редиректов", поэтому терминал дает более быструю диагностику: curl печатает каждый заголовок Location по пути, так что видно, какие именно два URL указывают друг на друга. Семантика кодов статуса определена в RFC 9110, а на практике это означает, что постоянный редирект кешируется браузером, поэтому неверный 301 остается неверным для этого посетителя даже после того, как вы его исправите.

Длинные цепочки стоит сокращать, даже если они работают. Каждый переход добавляет задержку на мобильном соединении, и на каждом из них query-строка может потеряться - именно так UTM-параметры пропадают в GA4. Разбор 301 против 302 объясняет, какой код статуса где уместен, а типы редиректов описывает остальное семейство.

Когда сломана именно точка назначения

Иногда с самой короткой ссылкой все в порядке, а вот со страницей за ней - нет. Редирект возвращает 301, браузер по нему переходит, а назначение отвечает 404, потому что страницу кампании сняли с публикации или изменили ее слаг.

Это как раз тот сценарий отказа, ради которого короткие ссылки и стоят своих денег, потому что решение - перенаправить, а не перепечатать. Смените назначение - и снова заработают все места, где была опубликована ссылка, включая напечатанные. Предотвращение протухания ссылок рассказывает, как ловить такое раньше клиента, а мониторинг редиректов ссылок с Sentry и Datadog - как настроить оповещения об этом в масштабе.

В каком порядке проверять

Заголовки - всегда первыми. curl -sI в одну строку разделяет DNS, TLS и HTTP, и у каждого из них свое собственное решение, никак не связанное с двумя другими. Затем слаг, затем назначение, затем приложение или шлюз между ними.

Одна проверка, которая ловит большинство проблем до того, как их увидит кто-то еще: откройте каждую новую ссылку один раз с телефона, на мобильном интернете, а не на офисном wifi. Это занимает пятнадцать секунд и ловит еще не выпущенный сертификат, гео-правило без резервного варианта и назначение, которое редиректит куда-то не туда, куда вы ожидали.

Читайте цикл материалов

Этот материал относится к кластеру туториалов. За механикой, которая стоит за всем этим, обратитесь к материалу как работают сокращатели URL, где разобран путь редиректа, а чек-лист безопасности сокращателя URL описывает злоупотребления, из-за которых домены и блокируются в первую очередь.

Похожие материалы в блоге

Частые вопросы

Почему моя короткая ссылка не работает?

Выполните curl -sI и прочитайте первую строку. 404 означает, что слаг неверный или удален, ошибка TLS означает, что кастомный домен не настроен до конца, 200 со страницей предупреждения означает, что ссылку заблокировали приложение или шлюз, а цепочка 301 означает, что назначение указывает обратно на саму ссылку. У каждой причины свое решение.

Почему моя короткая ссылка говорит, что сертификат недействителен?

Кастомный домен обслуживает короткую ссылку раньше, чем появился сертификат. Это происходит, когда DNS-запись добавили, но проверка так и не завершилась, либо когда домен указали на сервис редиректов через A-запись вместо CNAME, которую просил провайдер. Завершите проверку - и сертификат будет выпущен автоматически.

Почему моя короткая ссылка работает в браузере, но не в WhatsApp или Slack?

Потому что приложение сверяет домен со списком репутации, прежде чем пропустить сообщение, а бесплатные общие домены сокращателей несут ту репутацию, которую заработал их худший пользователь. Перенос той же ссылки на собственный домен решает проблему, потому что тогда репутация принадлежит только вам.

Что означает петля редиректов на короткой ссылке?

Назначение в итоге указывает обратно на короткую ссылку, поэтому браузер прыгает между ними, пока не сдастся. Обычно это случается, когда кто-то редактирует ссылку так, что она указывает на страницу, которая сама редиректит на короткий URL, либо когда две ссылки указывают друг на друга. Направьте назначение на финальную страницу.

Моя короткая ссылка выдает 404, но я вижу ее в дашборде. Что делать?

Проверьте регистр и символы: слаги обычно чувствительны к регистру, поэтому /Spring и /spring - разные ссылки, а заглавную I легко перепутать со строчной l при наборе с печатного текста. Затем проверьте, не задан ли для ссылки срок действия или гео-правило, которое исключает место, откуда вы тестируете.

Сколько времени должно пройти, прежде чем короткая ссылка заработает?

Ссылка на домене, который уже работает, срабатывает мгновенно. Совершенно новый кастомный домен ждет распространения DNS и выпуска сертификата - обычно это минуты, но может занять до часа в зависимости от предыдущего TTL записи, которую вы изменили.

Попробуйте Elido

Вставьте URL - получите короткую ссылку

Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.

Бесплатно, без регистрации · 2 в день

Попробуйте Elido

URL-сокращатель с хостингом в ЕС: собственные домены, глубокая аналитика, открытый API. Бесплатный тариф - без банковской карты.

Теги
short link not working
short url 404
short link certificate error
redirect not working
short link blocked
troubleshoot short links

Читать дальше