Що таке noindex і коли його використовувати
Директива noindex каже пошуковим системам не включати сторінку до індексу, хоча обходити її їм і далі дозволено. Її задають або як мета-тег у <head> сторінки, або як заголовок HTTP-відповіді X-Robots-Tag, і це правильний інструмент для сторінок, які мають існувати, але не мають з'являтися в результатах пошуку.
Два місця, де живе noindex
Є рівно два підтримувані способи це сказати, і вони означають те саме:
<meta name="robots" content="noindex">
X-Robots-Tag: noindex
Мета-тег працює лише всередині <head> HTML-документа. Заголовок працює для будь-чого, що надсилає сервер, тому це єдиний варіант для PDF, зображення чи JSON-ендпоінту. Ви також можете націлитися на конкретний краулер за назвою, тож <meta name="googlebot" content="noindex"> застосовується до Google і не чіпає інші системи.
Друге значення в content - окреме рішення. noindex, follow тримає сторінку поза індексом, дозволяючи краулерам використовувати її посилання; noindex, nofollow зупиняє й те, й те. Для пагінованого архіву чи фільтрованого списку зазвичай потрібен саме noindex, follow, бо посилання на цих сторінках - це те, як знаходять глибші сторінки.
Коли noindex - правильне рішення
Використовуйте його на сторінках, які мають бути досяжними, але яким нема чого робити в рейтингу: сторінки внутрішніх результатів пошуку, сторінки подяки й підтвердження замовлення, дублікати для друку, розділи акаунта користувача, архіви тегів, що містять по одному посту, і staging- чи демо-середовища загалом.
Не використовуйте його як виправлення дубльованого контенту, коли дві сторінки насправді те саме. Для цього існує rel=canonical: канонічне посилання консолідує сигнали з обох URL-адрес в одну, тоді як noindex повністю відкидає дублікат, разом з усіма посиланнями.
Правило, яке всі плутають: обхід іде першим
Краулеру потрібно отримати сторінку, щоб побачити на ній noindex. Якщо ви заблокуєте цю URL-адресу в robots.txt, краулер ніколи її не отримає, ніколи не побачить директиву, і URL-адреса й далі може з'являтися в результатах через зовнішні посилання, зазвичай без опису.
Тож поєднувати ці два - контрпродуктивно. Щоб прибрати сторінку з пошуку, дозвольте обхід і віддавайте noindex. Щойно сторінку повторно обійдено й видалено, можна заблокувати її в robots.txt, якщо ви ще й хочете зберегти бюджет обходу. Зробити це в зворотному порядку лишає сторінку в індексі на невизначений час. Розміщення noindex усередині robots.txt теж не працює; Google перестав підтримувати цей недокументований синтаксис 1 вересня 2019 року.
Як це просочується зі staging у продакшн
Майже кожен серйозний інцидент із noindex починається як навмисний, правильний noindex на staging-сайті. Тоді трапляється одне з цього:
- Копія бази даних. Staging-базу даних відновлюють поверх продакшну, несучи з собою прапорець CMS. У WordPress це чекбокс "Discourage search engines from indexing this site" у Settings, збережений як рядок опції.
- Промоут конфігурації. Staging-файл
.envчи фрагмент nginx, що додаєX-Robots-Tag: noindexдо кожної відповіді, деплоять разом із релізом. - Злиття теми чи шаблону. Захардкоджений мета-тег у спільному файлі макета переживає злиття, яке ніхто не прочитав рядок за рядком.
- Правило CDN чи edge, написане для захисту хоста прев'ю, застосоване до патерну маршруту, що також збігається з продакшном.
Причина, чому це дорого коштує, - нічого не ламається. Сайт повертає 200, завантажується нормально й проходить кожну перевірку аптайму. Трафік розпадається протягом днів, поки сторінки повторно обходять і видаляють, і на момент, коли хтось помічає графік, відновлення теж займає дні.
Як помітити noindex, якого ви не планували
- Прочитайте заголовок.
curl -sI https://example.com/ | grep -i x-robots-tagнічого не повертає на здоровій сторінці. Усе, що він виводить, варте пояснення. - Прочитайте мета-тег у відданому HTML, а не у вашому редакторі:
curl -s https://example.com/ | grep -i 'name="robots"'. Серверна логіка й edge-воркери можуть впроваджувати теги, яких немає у вашому репозиторії. - Перевірте Search Console. URL Inspection показує "Виключено тегом 'noindex'" для кожної URL-адреси, а звіт Pages групує всі постраждалі URL-адреси під тією самою причиною.
- Обійдіть увесь сайт, бо витік рідко трапляється на головній сторінці, яку ви тестували. Обхід позначає noindex для кожної URL-адреси, тож шаблон, що зачіпає лише сторінки товарів, з'явиться як блок позначених рядків, а не як одна несподіванка.
Загальносайтовий noindex - простий випадок. Поширеніший - один шаблон чи один маршрут, і саме це вибіркова перевірка головної сторінки якраз і пропускає.
Перевіряйте кожну сторінку, а не лише ту, яку пам'ятаєте
Для однієї URL-адреси безкоштовний перевіряльник noindex читає мета-тег robots і заголовок X-Robots-Tag так, як їх віддає сторінка, і каже, який саме з них встановив директиву. Щоб побачити, чи це одна сторінка, чи цілий розділ, безкоштовний інструмент обходу сайту проходить сайтом і позначає кожну сторінку з noindex, яку знаходить, разом із відсутніми канонічними посиланнями й дубльованими тілами. А оскільки витік зазвичай приходить разом із релізом, опція Indexability на HTTP-моніторі HostTracker читає обидва при кожній перевірці й надсилає сповіщення того дня, коли щось із них змінюється - про те, як це працює, розповідає SEO-моніторинг.