[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-hreflang::ru":3,"gloss-cluster-hreflang::ru":22,"gloss-next-hreflang::ru":8},{"slug":4,"category":5,"name":4,"definition":6,"meta_desc":7,"faq":8,"schema_markup":8,"related":9},"hreflang","dev-tools","hreflang — это аннотация, сообщающая поисковому движку, что у страницы есть равнозначные версии на других языках или для других регионов, и какая из них какая. Её объявляют элементами link в head документа, HTTP-заголовками Link либо внутри XML-карты сайта; карту обычно проще всего держать корректной, потому что всё соответствие лежит в одном сгенерированном файле, а не повторяется на каждой странице каждой локали.\n\nМеханика неумолима ровно в одном: набор должен быть взаимным. Каждая страница языковой группы обязана ссылаться на все остальные страницы группы, включая саму себя. Версию, на которую ссылаются, но которая не отвечает тем же, обычно игнорируют, и поскольку ошибка нигде не проявляется, неполный набор ведёт себя в точности как отсутствие аннотации. Запись x-default называет версию, которую отдавать, когда ни один из перечисленных языков посетителю не подходит.\n\nВторой надёжный источник ошибок — сами коды. Язык задаётся кодом ISO 639-1, за которым может следовать регион по ISO 3166-1 Alpha-2: значит en-GB, а не en-UK, — и вот что чаще всего сбивает: uk сам по себе означает украинский язык, а вовсе не Великобританию. Один только регион невалиден никогда; языковая часть обязательна.\n\nСтоит ясно проговорить, чего hreflang не делает. Это не фактор ранжирования, и он ничего не объединяет: два перевода остаются двумя страницами, конкурирующими по собственным заслугам каждая на своём рынке. Проблему дублей он тоже не решает — каждая локализованная страница должна нести каноникал на саму себя, а каноникал, ведущий с одного языка на другой, полностью отменяет аннотацию.\n\nПроверять стоит поломки структурные, а не редакторские: аннотации, ведущие на адреса с редиректом, с 404 или с noindex; новую локаль, появившуюся в маршрутах, но не в карте сайта; переводы, сгенерированные по адресу, о котором аннотация не знает. Генерируйте соответствие из того же источника, что и маршруты, и весь этот класс проблем исчезает.","hreflang сообщает движкам, какая страница для какого языка и региона. Набор должен быть взаимным, коды — ISO, а сигналы между локалями он не объединяет.",null,[10,13,16,19],{"slug":11,"name":12},"cms","Система управления контентом (CMS)",{"slug":14,"name":15},"data-residency","Резидентность данных (Data Residency)",{"slug":17,"name":18},"multi-region","Мультирегиональная архитектура (Multi-Region)",{"slug":20,"name":21},"static-site-generator","Генератор статических сайтов (SSG)",[23,27,31,34,37,40,43,46,49,52,55,58],{"slug":24,"category":5,"name":25,"updated_at":26},"abstraction-layer","Слой абстракции","2026-09-08T21:32:37+00:00",{"slug":28,"category":5,"name":29,"updated_at":30},"agent","Агент (Agent)","2026-09-08T21:32:35+00:00",{"slug":32,"category":5,"name":33,"updated_at":30},"ai-code-assistant","AI-помощник по написанию кода",{"slug":35,"category":5,"name":36,"updated_at":30},"api-gateway","API-шлюз (API Gateway)",{"slug":38,"category":5,"name":39,"updated_at":30},"api-versioning","API Versioning (версионирование API)",{"slug":41,"category":5,"name":42,"updated_at":30},"autonomous-agent","Автономный агент (Autonomous Agent)",{"slug":44,"category":5,"name":45,"updated_at":30},"blue-green-deployment","Blue-Green Deployment (сине-зелёное развёртывание)",{"slug":47,"category":5,"name":48,"updated_at":30},"canary-deployment","Canary Deployment (канареечное развёртывание)",{"slug":50,"category":5,"name":51,"updated_at":26},"canonical-url","Канонический URL",{"slug":53,"category":5,"name":54,"updated_at":30},"chaos-engineering","Chaos Engineering (хаос-инжиниринг)",{"slug":56,"category":5,"name":57,"updated_at":30},"ci-cd","Непрерывная интеграция \u002F непрерывное развёртывание (CI\u002FCD)",{"slug":59,"category":5,"name":60,"updated_at":61},"circuit-breaker","Предохранитель (Circuit Breaker)","2026-09-08T21:32:36+00:00"]