Сайт на WordPress редко разваливается сразу. Он разваливается постепенно: сначала появляется рубрика «Разное», потом три страницы про одну и ту же услугу с чуть разными заголовками, потом двести меток, каждая из которых стоит на одной записи. Через год владелец бизнеса открывает Search Console и видит, что в индексе полторы тысячи адресов, а трафик идёт на семь из них.
Мы разбирали такие сайты десятками и почти всегда находили одну и ту же причину. Дело не в текстах и не в скорости загрузки. Дело в том, что у сайта нет структуры, есть куча материалов, сваленных в одну корзину. SEO структура сайта задаётся в первую неделю проекта, а расплачиваться за неё приходится годами.
Что вообще считать структурой сайта
Под структурой понимают три разные вещи, и путаница между ними стоит дорого.
Первое — иерархия разделов. Какие блоки есть на сайте, что во что вложено, где заканчивается один смысловой кластер и начинается другой. Это то, что видно в меню и в хлебных крошках.
Второе — URL-адреса. Как физически выглядит путь к странице, отражает ли он вложенность, читается ли человеком.
Третье — связи внутри сайта. Кто на кого ссылается, какие страницы получают вес, а какие висят в пустоте.
Поисковая система собирает представление о сайте из всех трёх слоёв сразу. Красивое меню при плоских URL и нулевой перелинковке даёт тот же результат, что и полное отсутствие структуры. Поэтому проектировать нужно все три уровня вместе, до того как в базе появится первая сотня записей.
Записи, страницы, рубрики, метки: что для чего
WordPress из коробки даёт четыре сущности, и половина проблем начинается с того, что их используют не по назначению.
Страницы подходят для того, что существует вне ленты: услуги, о компании, контакты, посадочные под конкретный запрос. У страниц есть родитель, значит из них можно собрать вложенную иерархию.
Записи — это блог, новости, кейсы, всё, что имеет дату и логично выстраивается в ленту.
Рубрики иерархичны: у каждой рубрики можно указать родительскую, и подрубрики отображаются вложенными. Имя и ярлык рубрики должны быть уникальными, даже если две рубрики лежат под разными родителями.
Метки плоские. Родителя у метки нет, и никакой вложенности между метками WordPress не поддерживает. У метки есть только имя, ярлык и описание.
Из этого следует простое правило, которое мы применяем на каждом проекте: структура разделов WordPress строится на страницах и рубриках, метки к структуре отношения не имеют. Метка — это сквозной признак, а не уровень иерархии.
Ещё одна деталь, о которую спотыкаются при переборке старого сайта. Если удалить рубрику, записи из неё не удаляются, они переезжают в рубрику по умолчанию, заданную в настройках. Саму рубрику по умолчанию удалить нельзя. Поэтому чистка рубрик без предварительной переразметки записей заканчивается тем, что половина блога оказывается в «Без рубрики».
Сколько уровней вложенности нужно
Практический ответ: два, максимум три. Не потому, что поисковики не умеют обходить глубокие сайты, а потому, что каждый следующий уровень отбирает вес у страниц и усложняет навигацию.
Рабочая схема для сайта услуг выглядит так. Первый уровень — направления бизнеса. Второй — конкретные услуги внутри направления. Третий — только если внутри услуги есть реально разные коммерческие запросы, под которые люди ищут отдельно.
Проверка простая: если вы не можете назвать поисковый запрос, под который создаётся третий уровень, третьего уровня быть не должно. Раздел, придуманный «для порядка», собирает ноль трафика и разбавляет вес соседей.
Есть и обратная крайность: плоский сайт, где сорок страниц лежат в корне одним уровнем. Формально до любой из них два клика с главной, но смысловых связей между ними нет: поисковик не понимает, что «монтаж» и «пусконаладка» относятся к одному направлению, а «аудит» к другому. Вес с главной размазывается ровным слоем по всем сорока адресам, и ни один не получает достаточно, чтобы конкурировать по коммерческому запросу. Иерархия концентрирует вес там, где он приносит деньги, и в этом её смысл.
С блогом та же логика, только рубрик обычно нужно меньше, чем кажется. Пять-семь рубрик покрывают контент-план на пару лет вперёд. Двадцать рубрик означают, что в каждой будет по три статьи, а архив рубрики окажется пустой страницей, которую нечего показывать в выдаче.
Постоянные ссылки: настроить один раз и не трогать
Настройки → Постоянные ссылки: экран, куда заходят один раз и потом жалеют. WordPress предлагает готовые варианты и поле произвольной структуры, где собираются метки: %year%, %monthnum%, %day%, %post_id%, %postname%, %category%, %author% и другие.
Требование к любой произвольной структуре: она должна заканчиваться на %postname% или %post_id%, иначе WordPress не сможет однозначно определить конкретную запись.
Для коммерческого сайта мы почти всегда ставим /%postname%/. Дата в адресе старит статью в глазах пользователя и мешает при обновлении материалов. Идентификатор записи ничего не говорит ни человеку, ни поисковику.
С %category% сложнее. Адрес вида /uslugi/vnedrenie-crm/ читается лучше плоского, но есть нюанс: когда запись привязана к нескольким рубрикам, в адрес попадёт только одна, и WordPress выбирает её по алфавиту. То есть URL зависит от того, как назвали рубрики, а не от того, какая из них главная. Плагин Yoast SEO решает это через выбор основной рубрики, и именно она попадает в адрес и в хлебные крошки. Если такого плагина нет, структуру с рубрикой в адресе лучше не использовать.
На том же экране настраиваются префиксы архивов, «Основа рубрики» и «Основа метки». По умолчанию это category и tag. Значения можно поменять на русские или более короткие, но полностью убрать их из адреса штатными средствами WordPress нельзя.
И главное. Постоянная ссылка потому и называется постоянной, что менять её после запуска дорого. Смена структуры на живом сайте с историей означает массовую переклейку адресов и просадку позиций на несколько недель даже при корректных редиректах.
Метки: где они помогают, а где вредят
Метки задумывались как облегчённая горизонтальная классификация. Проблема в том, что архив каждой метки — это отдельный адрес со списком записей, и если меток двести, сайт получает двести тонких страниц, которые конкурируют с нормальными разделами.
Мы придерживаемся такого подхода. Метка заводится, только если под неё набирается хотя бы пять-семь материалов и есть смысл показывать этот срез пользователю. Всё остальное создаёт лишние сущности.
Архивы меток, которые всё же нужны для навигации, но не должны участвовать в поиске, закрываются через настройки Yoast SEO. Там для каждого типа контента и таксономии есть переключатель, показывать ли этот тип в результатах поиска. Когда он выключен, страницы получают noindex и одновременно исчезают из XML-карты сайта, то есть закрываются оба канала, через которые они могли попасть в индекс.
Хлебные крошки и перелинковка: структура, которую видит поисковик
Иерархия в голове владельца сайта и иерархия, которую считывает робот, это разные вещи. Робот видит ссылки.
Хлебные крошки — самый дешёвый способ показать вложенность. В Yoast SEO есть встроенный модуль хлебных крошек, который выводит структурированные данные в формате JSON-LD, и именно этот формат оказался самым надёжным для вывода крошек в сниппете. Если тема поддерживает функцию, переключатель доступен сразу; если нет, в шаблон добавляется небольшой фрагмент кода.
Дальше идут внутренние ссылки. Здесь у Yoast есть два полезных инструмента: счётчик текстовых ссылок, который показывает, сколько ссылок ведёт на каждый материал, и понятие «краеугольного контента». Краеугольный контент — это те несколько статей и страниц, которые вы считаете главными на сайте и которые должны ранжироваться выше остальных. В премиум-версии подсказки по перелинковке отдают приоритет именно им.
Обратная сторона той же медали, осиротевший контент,: материалы, на которые не ссылается ни одна другая страница сайта. Yoast относит к таким статьи старше шести месяцев, у которых меньше трёх входящих ссылок. Такие страницы трудно найти и человеку, и роботу, и в девяти случаях из десяти это не проблема качества текста, а проблема структуры, в которую текст не встроили.
Семантика первична: откуда берётся карта разделов
Структуру нельзя придумать из головы, глядя на сайт конкурента. Её выводят из того, как люди формулируют запросы.
Порядок такой. Собирается семантика по нише, то есть все запросы, по которым потенциальный клиент может искать то, что вы продаёте. Дальше запросы группируются: в одну группу попадают те, которые закрываются одной и той же страницей. Признак, что группа собрана верно: вы можете написать под неё один текст, и он будет одинаково уместен для каждого запроса из группы. Если в группе оказались «внедрение CRM» и «сколько стоит внедрение CRM», это одна страница. Если «внедрение CRM» и «обучение работе в CRM» — это две разные страницы, даже если услуги продаются вместе.
Каждая получившаяся группа становится кандидатом в раздел. Дальше группы выстраиваются по вложенности: широкие запросы наверх, уточняющие вниз. Так карта разделов вырастает из реального спроса, а не из представлений владельца о своём бизнесе.
На этом же этапе видно каннибализацию, то есть ситуацию, когда две страницы претендуют на одну группу запросов. Поисковик выбирает одну из них, и обычно не ту, которую вы считаете главной, а позиции обеих оказываются ниже, чем была бы позиция одной сильной страницы. На старом сайте каннибализацию ищут по Search Console: если по одному запросу в отчёте регулярно мелькают разные адреса, страницы конкурируют между собой.
Дубли, которые создаёт сама структура
WordPress щедро генерирует адреса, о существовании которых владелец сайта обычно не подозревает. Помимо архивов рубрик и меток это архивы по датам, архивы авторов, страницы пагинации, результаты внутреннего поиска и отдельные страницы вложений для каждой загруженной картинки.
На корпоративном сайте почти все они бесполезны. Архив автора на сайте, где один автор, полностью дублирует ленту блога. Архив по месяцам показывает те же записи в другом порядке. Страница вложения содержит одну картинку и ничего больше.
Разбирается это на том же экране настроек Yoast, где для каждого типа контента и каждой таксономии стоит переключатель показа в результатах поиска. Выключенный переключатель означает noindex плюс исключение из XML-карты сайта. Смысл в том, чтобы в карте сайта остались только те адреса, которые вы действительно хотите видеть в выдаче. Тогда карта становится осмысленным сигналом, а не выгрузкой всего подряд.
Отдельно стоит посмотреть, что делает установленный набор плагинов. Фильтры каталога, календари, формы подписки и системы отзывов часто добавляют собственные параметры в адрес и плодят варианты одной и той же страницы. Проверяется это просто: сравните число страниц, которые вы осознанно создали, с числом адресов в отчёте об индексировании. Разница в разы даёт повод разбираться.
Меню — это не структура
Частая ошибка на сайтах, которые мы аудируем: разделы существуют только в меню. Верхнее меню собрано красиво, а между самими страницами связей нет вообще.
Меню WordPress собирается во «Внешний вид → Меню» и живёт отдельно от иерархии страниц. Вложенность пунктов меню можно сделать какой угодно, независимо от того, кто у страницы родитель. Это удобно, но создаёт иллюзию порядка: в меню три уровня, а в реальной структуре сайта плоский список из сорока страниц.
Практический вывод: меню настраивайте после того, как выстроена иерархия страниц и рубрик, а не вместо неё. И проверяйте, чтобы вложенность в меню совпадала с фактической: расхождение путает и пользователей, и краулер.
Как выглядит перестройка структуры на живом сайте
Приведу иллюстративный пример. Он собирательный, но по сценарию типичный для проектов, с которыми к нам приходят.
Компания продаёт промышленное оборудование, сайт живёт четыре года. В блоге 180 статей, распределённых по одиннадцати рубрикам, из которых четыре содержат по две-три записи. Каталог сделан страницами без вложенности: сорок страниц лежат в корне сайта одним уровнем. Постоянные ссылки настроены как «День и название», то есть в каждом адресе есть дата четырёхлетней давности.
Порядок работ в такой ситуации выглядит примерно так.
Сначала инвентаризация: выгружаем все адреса, сводим с данными о трафике и входящих ссылках. Материалы, которые не собирают ничего и не имеют внешних ссылок, идут в кандидаты на объединение или удаление, а не на перенос.
Дальше проектирование целевой карты: какие разделы остаются, что во что вкладывается, куда переезжает каждый существующий адрес. Карта соответствия «старый URL → новый URL» составляется до того, как что-то трогается в админке.
Потом реализация: создаются новые разделы, переразмечаются записи по укрупнённым рубрикам, для каждой записи назначается основная рубрика, настраиваются постоянные ссылки и хлебные крошки.
Затем редиректы. Каждый старый адрес получает постоянное перенаправление на новый. Цепочек из нескольких перенаправлений подряд быть не должно, они съедают вес и замедляют обход.
И только после этого обновляется карта сайта и отправка её в Search Console и Яндекс.Вебмастер, а дальше несколько недель наблюдения за индексом и ошибками сканирования.
Работа не быстрая и почти всегда сопровождается временной просадкой. Именно поэтому структуру дешевле спроектировать один раз на старте: разработка сайтов под ключ в нашем исполнении начинается не с макета главной, а с карты разделов и семантики, под которую эти разделы создаются.
Чек-лист перед запуском нового раздела
Короткий список вопросов, который экономит нам недели правок. Задавайте его каждый раз, когда собираетесь добавить на сайт новый раздел.
Под какой запрос создаётся раздел и есть ли у этого запроса частотность. Не пересекается ли он с уже существующим разделом настолько, что они начнут делить между собой одни и те же позиции. На каком уровне вложенности он должен находиться и какой у него будет родитель. Как будет выглядеть адрес и укладывается ли он в принятую на сайте схему. Откуда на новый раздел пойдут внутренние ссылки: из меню, из текста родительской страницы, из статей блога. И что произойдёт с этим разделом, если через полгода в нём так и останется одна страница.
Последний вопрос отсеивает больше половины идей, и это нормально.
Частые вопросы
Нужно ли включать рубрику в адрес записи?
Не обязательно. Плоский адрес /postname/ работает не хуже, а рисков с ним меньше: не придётся ничего переклеивать, если запись переедет в другую рубрику. Если рубрику в адрес всё же добавляете, обязательно назначайте записи основную рубрику, иначе WordPress подставит в адрес первую по алфавиту.
Сколько рубрик можно назначить одной записи?
Технически сколько угодно. На практике мы ставим одну. Запись в трёх рубриках попадает в три архива, создаёт дубли списков и размывает тематику каждого раздела.
Можно ли убрать /category/ из адресов архивов?
Штатными средствами WordPress — нет. Значение префикса можно изменить на экране постоянных ссылок, но убрать его полностью нельзя. Существуют плагины, которые это обходят, но выигрыш обычно не стоит риска конфликтов с другими правилами адресации.
Что делать со старыми статьями, которые никуда не вписываются в новую структуру?
Оценивать по трафику и внешним ссылкам. Материалы, которые собирают переходы, переносить в подходящий раздел. Несколько слабых статей на одну тему объединять в одну сильную и настраивать перенаправление со старых адресов на новый. Удалять без замены стоит только то, что не собирает ничего и не имеет входящих ссылок.
Стоит ли делать отдельные разделы под каждый город?
Только если вы действительно работаете в этих городах и у страницы будет собственное содержание: адрес, контакты, свои кейсы, свои условия. Десять одинаковых страниц, отличающихся подставленным названием города, поисковик распознаёт как шаблонные и обычно не показывает ни одну из них. Один сильный раздел работает лучше десяти пустых.
Как понять, что структура работает?
По трём признакам. В индексе примерно столько адресов, сколько вы осознанно создали, без хвоста из архивов и служебных страниц. Переходы из поиска распределены по разделам, а не сосредоточены на главной. И у каждой значимой страницы есть входящие ссылки с других страниц сайта, и ни один важный материал не висит в изоляции.
