Ситуация типовая: в индексе уже есть лишняя страница — тестовый URL, служебный архив, дубль фильтра, старая версия материала или страница, которую нельзя удалять из-за внутренних ссылок. Полностью закрывать сайт не нужно, но один конкретный адрес надо убрать из поиска и не допустить повторной индексации.
Важно сразу разделить задачи: не индексировать и не сканировать — это не одно и то же. Для удаления URL из поиска обычно работает связка noindex + корректный canonical + отсутствие ссылки в sitemap. robots.txt помогает ограничить обход, но сам по себе не гарантирует выпадение страницы из индекса, если она уже известна поисковику.
Когда проблема действительно в индексации, а не в дублировании
Перед правкой кода проверьте, что именно происходит с адресом. Иногда страница уже не нужна, но в выдаче висит её копия с другим параметром, а иногда поисковик показывает URL без текста, потому что он был закрыт от обхода слишком рано.
Что посмотреть в первую очередь
- есть ли URL в индексе по запросу
site:example.com/адрес; - отдаёт ли страница код
200,301или404; - не стоит ли на ней
noindexуже сейчас; - не попадает ли адрес в XML-карту сайта;
- не ведут ли на него внутренние ссылки из меню, хлебных крошек, архива или похожих записей.
Если страница должна исчезнуть окончательно, но при этом отдаёт 200, поисковик будет держать её в базе дольше. Если же вы просто хотите убрать её из выдачи, но оставить для пользователей, нужен именно noindex, а не удаление файла или запрет в robots.txt.
Рабочая схема: noindex для одного URL и проверка канонического адреса
Самый надёжный вариант — повесить noindex,follow только на нужную страницу. В WordPress это можно сделать через wp_head, если URL известен заранее и не зависит от сложной логики.
<?php
add_action('wp_head', function () {
if (is_page(123)) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
echo '<link rel="canonical" href="' . esc_url(home_url('/nuzhnyy-adres/')) . '" />' . "\n";
}
});В этом примере страница с ID 123 не будет индексироваться, а канонический адрес укажет поисковику, какую версию считать основной. Если у вас не одна страница, а целый тип контента или набор URL по шаблону, логику лучше строить через условные теги WordPress, а не через ручные правки в шаблоне.
Если нужно закрыть архив, тег или вложение
Для архивов и медиа-страниц часто удобнее использовать фильтры SEO-плагина или собственную логику в теме. Например, у вложений в WordPress нередко есть отдельная страница-обёртка, которая не несёт пользы в поиске. Её лучше либо редиректить на сам файл/родительскую запись, либо закрывать от индексации.
<?php
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = get_post_field('post_parent', get_queried_object_id());
if ($parent) {
wp_safe_redirect(get_permalink($parent), 301);
exit;
}
}
});Такой редирект полезнее, чем просто оставлять attachment-страницу в индексе. Но если вложение уже используется как отдельная посадочная, редирект делать нельзя — в этом случае лучше ограничиться noindex.
Что делать с robots.txt, а что не делать
robots.txt нужен, когда вы хотите ограничить обход технических разделов, а не точечно убрать страницу из индекса. Если закрыть уже проиндексированный URL через Disallow, поисковик может перестать его обходить, но запись в индексе останется без обновления. Для удаления это слабый инструмент.
| Способ | Когда использовать | Плюс | Минус |
|---|---|---|---|
noindex | Нужно убрать конкретный URL из поиска | Прямой сигнал поисковику | Нужно дождаться переобхода |
robots.txt | Нужно ограничить сканирование | Снижает нагрузку на обход | Не гарантирует удаление из индекса |
301 на новый адрес | Страница переехала | Передаёт сигнал о замене URL | Не подходит, если страницы больше не должно быть |
404/410 | Страница удалена навсегда | Чёткий сигнал об исчезновении | Нельзя использовать, если нужен контент для пользователей |
Если URL уже в индексе и вы хотите ускорить его исчезновение, обычно делают так: ставят noindex, убирают ссылку из sitemap, при необходимости возвращают 404 или 410, а затем отправляют страницу на переобход через панели вебмастеров.
Пошаговое решение без лишнего риска
- Определите точный URL, который надо исключить.
- Проверьте, есть ли у него внутренние ссылки и есть ли он в XML-карте сайта.
- Выберите сценарий: оставить страницу доступной, удалить её или перенести на другой адрес.
- Добавьте
noindexтолько на нужный URL или шаблон. - Если страница переехала, поставьте
301на актуальный адрес. - Если страница удалена навсегда, отдавайте
404или410, а не пустую страницу с200. - Проверьте исходный код, заголовки ответа и статус в панели вебмастера.
Если вы используете SEO-плагин, часть задачи можно решить без кода. Например, в некоторых конфигурациях удобнее отключить индексацию конкретной записи через метабокс SEO-плагина и отдельно исключить её из карты сайта. Это проще поддерживать, чем держать ручной код в теме, если контентом управляет редактор.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте страницу и посмотрите исходный код: должен быть мета-тег robots с noindex, если вы выбрали именно этот путь. Затем проверьте HTTP-статус ответа. Если был редирект, он должен вести на нужный адрес без цепочки из нескольких переходов.
- в HTML есть
<meta name="robots" content="noindex,follow" />; - канонический URL указывает на правильную страницу;
- страница не попадает в XML sitemap;
- в панели вебмастера URL отмечен как исключённый или неиндексируемый;
- при запросе
site:страница постепенно исчезает из выдачи после переобхода.
Если используете Google Search Console или Яндекс.Вебмастер, не ждите мгновенного результата. Сначала поисковик должен заново обойти адрес и увидеть новый сигнал. Если страница закрыта от обхода в robots.txt, а не через noindex, процесс может затянуться.
Частые ошибки и как их исправить
Закрыли URL в robots.txt и ждёте удаления
Это самая частая ошибка. Если страница уже в индексе, Disallow не сообщает поисковику, что её надо убрать. Сначала дайте сигнал через noindex или 404/410, потом ограничивайте обход.
Оставили страницу с кодом 200 и пустым контентом
Пустая или почти пустая страница с 200 — плохой сигнал. Если контент не нужен, отдавайте честный 404 или 410. Если контент нужен, но не должен индексироваться, используйте noindex.
Поставили canonical на нерелевантный адрес
Каноникал не должен уводить на случайную главную страницу или на страницу, которая не соответствует содержанию. Иначе поисковик может проигнорировать подсказку. Канонический адрес должен быть логичным дублем или основной версией того же материала.
Забыли убрать URL из sitemap
Если адрес остаётся в карте сайта, вы сами подсказываете поисковику, что его стоит переобойти. Для исключаемых страниц это лишний шум. После правки проверьте генератор sitemap и исключите нужный тип записей или конкретный объект.
Безопасность и производительность: что учесть в WordPress
Если вы добавляете логику в тему, не привязывайте её к случайным шаблонам. Лучше держать такие правила в дочерней теме или небольшом mu-plugin, чтобы они не пропали после обновления. Для массовых правил по индексации удобнее использовать SEO-плагин или отдельный слой конфигурации, а не размазывать код по functions.php.
Ещё один практический момент: не плодите редиректы. Если URL уже закрыт и не нужен, один корректный ответ лучше, чем цепочка 301 → 302 → 404. Это и для обхода поисковиком хуже, и для сервера лишняя нагрузка.
Если вам нужно регулярно чистить сайт от дублей, служебных архивов и лишних страниц, удобнее держать это в одном инструменте, а не собирать вручную по кускам. В таких задачах иногда используют Clearfy Pro: он закрывает часть типовых SEO- и технических настроек без постоянного редактирования шаблонов. Но даже с плагином важно понимать, какой именно сигнал вы отправляете поисковику — noindex, редирект или удаление страницы.
Когда задача точечная, ориентируйтесь на простой принцип: если страница должна остаться доступной — noindex; если она переехала — 301; если она больше не нужна — 404/410. Всё остальное — вспомогательные меры, а не замена основному сигналу.