Коротко
- Punycode (RFC 3492) обратимо кодирует Unicode-метку в ASCII; в DNS такие метки пишутся с префиксом xn--, например пример.рф превращается в xn--e1afmkfd.xn--p1ai. Префикс принадлежит спецификации IDNA, а не самому RFC 3492; IDNA2003 и IDNA2008 несовместимы, UTS 46 описывает совместимую обработку.
- Chrome показывает xn-- вместо кириллицы, если метка смешивает письменности, содержит невидимые символы или похожа на известный домен. Владельцам Chromium советует перенаправлять дополнительные IDN-регистрации на основной домен кодом 301 или 302.
- Подтверждений SEO-преимущества кириллического домена в справках Google и Яндекса я не нашёл; практики пишут, что его нет. Для Метрики в регулярных выражениях punycode не применяется, пишется кириллица. Примеры кодирования проверены расчётом.
- В статье — как устроен Punycode, IDNA, отображение в браузерах, настройка DNS, сертификата и редиректов, SEO, безопасность, десять ошибок и PDF-чек-лист на 27 пунктов.
Коротко: что такое Punycode и зачем он нужен владельцу сайта с кириллическим доменом
Punycode — это способ записать название на любом языке (с кириллицей, иероглифами, диакритикой) только латинскими буквами, цифрами и дефисом, из которых умеют состоять имена в системе DNS. Именно так работают домены вроде пример.рф: в адресной строке вы видите кириллицу, а в DNS, письмах и многих логах домен записан как xn--e1afmkfd.xn--p1ai. Префикс xn-- отличает такие метки, а остальная часть — закодированное имя.
Чтобы не запутаться, полезно разделять три понятия (по стандартам RFC 3492 и UTS #46):
- Punycode — «транспортное» кодирование: обратимо превращает Unicode-строку в ASCII-строку. Это RFC 3492. Само по себе оно не нормализует и не проверяет имена.
- IDNA — система международных доменных имён: она решает, какие имена допустимы, как приводить их к единому виду (регистр, нормализация) и когда применять Punycode. Существуют две несовместимые версии: IDNA2003 и IDNA2008; Unicode UTS #46 описывает совместимую обработку.
- Отображение в браузере — отдельная политика: браузер может показать вам кириллицу или, из соображений безопасности, оставить
xn--…. Например, Chrome в ряде случаев показывает Punycode вместо Unicode, чтобы защититься от подделок (омографов).
Для магазина с кириллическим доменом (или тем, кто думает о нём) это означает три практические вещи: DNS, сертификаты и системные настройки работают с формой xn--; ссылки при копировании могут превращаться в «абракадабру»; безопасность отображения зависит от браузера. В статье: что такое Punycode и как он устроен, пример для .рф, IDNA2003 и IDNA2008, как браузеры показывают IDN, как настроить DNS, сертификат и редиректы, что известно про SEO (кириллический домен не даёт преимущества), как проверять, десять ошибок и PDF-чек-лист на 27 пунктов. Инструмент: Punycode-конвертер на tools.cetto.ru (кириллический домен в xn-- и обратно, работает со списками доменов и полными URL, раскодирует кириллицу в адресах).
Основа статьи — RFC 3492 (Punycode), Unicode UTS #46 (обработка IDNA), документация Chromium о политике отображения IDN, справка Google о структуре URL и материалы о кириллических доменах и их связи с SEO (Travelpayouts, справка Метрики). Информации о том, как именно Яндекс и Google ранжируют кириллические домены, в справках я не нашёл: утверждения о «пользе» или «вреде» кириллического домена приведены как мнения авторов. Примеры кодирования я проверил расчётом.
Как устроен Punycode
По RFC 3492, Punycode — вариант общего алгоритма Bootstring с параметрами, выбранными для IDNA. Принцип: ASCII-символы копируются в начало в исходном порядке, затем ставится разделитель «-», а остальные символы кодируются позициями и кодовыми точками в виде обобщённых целых переменной длины. Параметры адаптируются по ходу кодирования, что делает результат компактнее. Свойства: кодирование однозначно и обратимо (одной Unicode-строке соответствует одна закодированная строка и наоборот); декодер должен принимать буквы в любом регистре, а кодировщик выдавать только один регистр; алгоритм предназначен только для IDNA и не подходит для произвольного текста; разные записи одного текста Punycode сам не устраняет (это задача нормализации в IDNA). Префикс xn-- в тексте RFC 3492 не назван: он принадлежит спецификации IDNA (UTS #46 и RFC 3490 называют его при описании ToASCII).
| Имя | В Punycode | Комментарий |
|---|---|---|
пример.рф | xn--e1afmkfd.xn--p1ai | Каждая часть (метка) кодируется отдельно |
сайт.рф | xn--80aswg.xn--p1ai | В одном из обзоров ошибочно приведено другое значение: сверяйте конвертером |
магазин.рф | xn--80aairftm.xn--p1ai | Зона .рф сама кодируется как xn--p1ai |
bücher.de | xn--bcher-kva.de | ASCII-символы сохраняются, не-ASCII кодируются суффиксом |
купить-наушники.рф | xn----8sbwcahevbp8ajg4evc.xn--p1ai | Дефис в исходной метке сохраняется; код получается длинным |
Практическое следствие: кириллический домен технически длиннее своего «лица». У метки в DNS есть ограничения по длине, а закодированные кириллические имена растут быстро; слишком длинные названия не регистрируются. Проверить кодирование и декодирование: Punycode-конвертер. Как кодирование ведёт себя в адресах (в процентной записи): кодирование URL, Base64 и HTML-сущностей.
IDNA2003 и IDNA2008: что нужно знать
В 2003 году появилась IDNA2003, которая переводит имена с не-ASCII символами в Punycode. В 2010 году вышла IDNA2008, но она несовместима с прежней версией, что создало трудности для браузеров и почтовых клиентов в переходный период. UTS #46 задаёт правила обработки, чтобы клиенты открывали домены, допустимые в любой из систем. По документу, различия бывают трёх типов: добавления (имя недопустимо в IDNA2003, но допустимо в IDNA2008), исключения (наоборот) и отклонения (имя допустимо в обеих системах, но ведёт к разным адресам). Отклонения касаются символов ß, ς и невидимых ZWJ и ZWNJ; одно и то же имя вроде «Gießen» в разных системах может вести на разные IP-адреса, что открывает возможность для фишинга. Документ также отмечает, что UTS #46 не решает проблему похожих символов (confusables), для этого есть другие документы (UTR #36, UTS #39), и что в основных реализациях применяется нетранзитивная обработка для четырёх символов-отклонений. Для вас как владельца русскоязычного домена это в основном теоретический раздел; но он объясняет, почему при смешении алфавитов и спецсимволов бывают сюрпризы.
Нормализация: регистр не важен («ÖBB.at» и «öbb.at» — один домен), символы приводятся к единой форме. Для кириллицы практический вывод простой: используйте только строчные кириллические буквы, цифры и дефис, не смешивайте кириллицу и латиницу в одной метке.
Как браузеры показывают IDN
Документация Chromium объясняет, зачем Chrome иногда показывает Punycode: доменные имена с не-латинскими символами удобны, но позволяют подделывать адреса через омографы (например, кириллическую «а» вместо латинской). С Chrome 51 политика не зависит от языковых настроек браузера, и каждая метка проверяется отдельно. Chrome показывает Punycode (вид xn--…) вместо Unicode, если метка:
- не конвертируется в Unicode, содержит запрещённые символы или нарушает правила двунаправленного текста;
- содержит символы, не разрешённые стандартом UTS 39;
- смешивает письменности без допустимого сочетания: латиница не смешивается с кириллицей или греческим (ASCII-латиница допустима только с китайскими, японскими или корейскими письменностями);
- смешивает системы цифр, содержит невидимые символы или использует символы необычным образом;
- похожа на известный домен по «скелету» (после упрощения символов и удаления диакритики);
- целиком состоит из символов, похожих на латиницу, а домен верхнего уровня не относится к соответствующей письменности; совпадает с опасным шаблоном.
Если ни одно условие не сработало, показывается Unicode. Для владельцев доменов Chromium советует: дополнительные регистрации (например, IDN-вариант основного домена) перенаправлять на основной домен кодом 301 или 302 (мета-редиректы предупреждение не учитывает); для http и https лучше один редирект сразу на финальный адрес. Chrome также может блокировать навигацию, если адрес выглядит как подделка известного сайта (проверка «скелета» с недавно посещёнными и топ-500 доменами; все проверки выполняются локально). Выводы: не смешивайте кириллицу и латиницу в одном имени, а имя бренда не должно быть визуально похоже на чужой известный домен. Другие браузеры (в том числе Яндекс Браузер) могут применять свои правила: проверьте отображение вашего домена на реальных устройствах.
Как настроить сайт на кириллическом домене
- DNS. Записи (A, AAAA, MX, TXT и др.) создаются для имени в форме Punycode или через интерфейс регистратора, который сам кодирует: проверьте результат: DNS-записи, «DNS-записи». Для почты (SPF, DKIM, DMARC) используйте закодированное имя: «Письма попадают в спам».
- Сертификат. Сертификаты обычно выпускаются на закодированное имя (по общим сведениям); убедитесь, что центр поддерживает кириллические домены и что сертификат покрывает обе записи (корень и www): «SSL-сертификат», проверка SSL.
- Хостинг и CMS. Добавляйте домен в панели хостинга и в настройках CMS в закодированной форме, если интерфейс не принимает кириллицу; проверяйте абсолютные ссылки и канонические адреса: «Canonical».
- Редиректы. Настройте одно основное зеркало (с www или без, https) и перенаправляйте остальные 301: «ЧПУ», цепочки редиректов. Если у вас есть и латинский домен, определите главный и свяжите их редиректом, как советует Chromium для дополнительных регистраций.
- Вебмастера. Добавьте сайт в Яндекс Вебмастер и Search Console и подтвердите права по DNS или файлом: «Яндекс Вебмастер». Для переезда с одного домена на другой следуйте инструкциям Яндекса и Google: «Миграция сайта».
- Метрика и цели. В условиях целей и сегментов по регулярным выражениям, по справке Метрики, punycode не применяется: пишется кириллица, а не закодированная форма: «Регулярные выражения», «Цели в Метрике».
- Письма и подписи. Адреса электронной почты на кириллических доменах поддерживаются не везде: тестируйте отправку и получение, особенно с крупными почтовыми сервисами (общий совет; в моих источниках нет).
- Внешние сервисы. Рекламные кабинеты, платёжные системы, мессенджеры и партнёры могут по-разному принимать кириллический адрес: проверьте, как отображаются и открываются ссылки: ссылки на мессенджеры.
Punycode и SEO
- Преимуществ кириллического домена для ранжирования нет. В материале Travelpayouts сказано, что кириллические домены не имеют SEO-преимущества перед латинскими и могут создавать проблемы при шаринге из-за Punycode. В справках Google и Яндекса я не нашёл утверждений о бонусе или штрафе; решение — вопрос бренда и удобства.
- Google о Unicode в адресах. Справка по структуре URL советует использовать язык аудитории (включая транслитерацию) и кодировать не-ASCII символы в ссылках в процентной записи; для доменов роль играет Punycode. См. «ЧПУ».
- Копирование ссылок. При копировании адрес с кириллицей в пути превращается в строку с процентными кодами (кириллическая буква занимает до шести символов), а домен остаётся читаемым не везде: проверьте, как выглядят ваши ссылки в мессенджерах, письмах и рекламе.
- Единый основной адрес. Для поисковиков http и https, www и без www, кириллическая и закодированная форма — один сайт при правильных редиректах и canonical; дубли без редиректов нежелательны: «Noindex».
- Доверие и запоминаемость. Для рускоязычной аудитории кириллический домен удобен на вывесках и в офлайне; при онлайн-ссылках часто важнее короткий латинский адрес и подключённый второй домен-зеркало.
- Не меняйте домен ради SEO. Смена домена — миграция со всеми рисками: «Миграция сайта».
Безопасность: омографы и подделки
- Омографы. Кириллические «а», «е», «о», «р», «с», «х» выглядят как латинские; мошенники регистрируют домены, визуально похожие на известные. Браузеры защищаются (см. выше), но не идеально.
- Для вас как владельца. Проверьте, нет ли «двойников» вашего бренда в смежных зонах; зарегистрируйте основные варианты и перенаправьте на основной сайт: Whois домена.
- Для сотрудников и покупателей. Если ссылка выглядит странно, переписывайте адрес вручную или проверяйте через конвертер; Punycode-форму домена нужно сверить с официальным значением.
- Письма. Мошеннические письма с похожими доменами: проверяйте домен отправителя в закодированной форме: конвертер.
- Не смешивайте алфавиты в своём имени: такие метки Chrome показывает как Punycode, и домен выглядит подозрительно.
Как проверить
- Конвертируйте домен в обе стороны и сравните с тем, что указано в DNS, сертификате и вебмастерах: Punycode-конвертер.
- Проверьте DNS и сертификат на закодированное имя: DNS-записи, SSL.
- Проверьте редиректы с зеркал на основной адрес (301 без цепочек): коды ответа.
- Откройте сайт в разных браузерах и на разных устройствах; проверьте, что показывается в адресной строке.
- Проверьте ссылки и письма: как выглядят в мессенджерах, почте, рекламе.
- Проверьте карту сайта, canonical и счётчики: все адреса используют одну форму.
- Проверьте Whois и срок: Whois домена.
Десять частых ошибок
- Смешивание кириллицы и латиницы в одной метке домена.
- DNS, сертификат или почта настроены не на то имя (Unicode вместо закодированного).
- Нет редиректа с дополнительных доменов и зеркал на основной.
- Canonical, карта сайта и ссылки используют разные формы адреса.
- Доверие к «SEO-плюсам» кириллического домена, которых в справках нет.
- Не проверяют отображение в браузерах и в мессенджерах.
- Сертификат не покрывает корень или www закодированного имени.
- Не проверяют почту на кириллическом домене.
- Не защищают бренд от визуально похожих доменов.
- Меняют домен ради «красоты» без плана миграции.
Что проверяю в аудите я
В техническом SEO-аудите я проверяю домен и его зеркала, DNS и сертификат, редиректы, canonical, карту сайта, отображение адреса в браузерах и ссылках, подтверждение прав в вебмастерах и связанные риски, и даю приоритетный план. Результат: PDF-отчёт на 30–50 страниц, технические задания для программистов, прогноз по трафику и заявкам и созвон, на котором я лично расскажу о найденных ошибках и отвечу на вопросы. Стоимость от 30 000 ₽, срок 3–5 рабочих дней для небольшого сайта и 7–10 для крупного магазина.
Итоговый чек-лист (короткая версия, полная в PDF)
- Домен сконвертирован в обе стороны; DNS, сертификат и вебмастера используют согласованные формы.
- Одно основное зеркало; остальные домены и варианты перенаправляются 301 без цепочек.
- В имени домена не смешаны кириллица и латиница; бренд защищён от похожих доменов.
- Сертификат покрывает корень и www; почта (SPF, DKIM, DMARC) настроена и протестирована.
- Ссылки и письма проверены в браузерах, мессенджерах и рекламе.
- Решения не основаны на мифе о SEO-преимуществе кириллического домена.
Частые вопросы
Что такое Punycode?
Обратимое кодирование Unicode-строки в ASCII-строку для международных доменных имён (RFC 3492). Метки с не-ASCII символами в DNS записываются с префиксом xn--, например пример.рф превращается в xn--e1afmkfd.xn--p1ai.
Чем Punycode отличается от IDNA?
Punycode — транспортное кодирование, а IDNA — система международных доменных имён: она определяет допустимые имена, нормализацию и применение Punycode. Существуют несовместимые версии IDNA2003 и IDNA2008; UTS #46 описывает совместимую обработку.
Почему браузер иногда показывает xn-- вместо кириллицы?
Из соображений безопасности. Chrome показывает Punycode, если метка смешивает письменности без допустимого сочетания, содержит запрещённые или невидимые символы или похожа на известный домен.
Даёт ли кириллический домен преимущества в SEO?
Подтверждений в справках Google и Яндекса нет. По материалам практиков, преимущества нет, а при шаринге возможны неудобства из-за Punycode.
Как настроить DNS и сертификат для кириллического домена?
Записи создаются для закодированной формы (интерфейсы регистраторов обычно кодируют сами); сертификат выпускается на закодированное имя и должен покрывать корень и www. Проверьте результат инструментами DNS и SSL.
Нужно ли перенаправлять дополнительные домены?
Да. Chromium советует перенаправлять дополнительные регистрации (например, IDN-вариант основного домена) на основной домен кодом 301 или 302, один редирект сразу на финальный адрес для http и https.
Как перевести домен в Punycode и обратно?
Конвертером на tools.cetto.ru: он работает со списками доменов и полными URL и раскодирует кириллицу в адресах. Результат можно сверить с настройками DNS.
Как в Метрике писать кириллический домен в регулярных выражениях?
По справке Метрики, punycode в условиях не применяется: пишется кириллица, а не закодированная форма.
Где скачать чек-лист?
PDF-чек-лист на 27 пунктов с приоритетами P1–P3, подсказками «как проверить» и подсчётом результата можно скачать по ссылке в статье. Он бесплатный; при цитировании укажите источник.