Параметр Clean-param в robots.txt. Как подружить Google и Yandex одновременно?
О том что параметр Clean-param не воспринимается гуглом, уже писалось и не раз (и на самом Яндексе тоже). С этим все понятно. Но как быть, если я хочу использовать robots.txt И для google И для Яндекс одновременно (да и вообще любых прочих ПС)?
Вроде бы существует директива, делящая на секции файл robots.txt, позволяющая задать параметр исключительно для Яндекса. Но при проверке утилитой от Google он генерирует ошибку (Яндекс же считает этот файл корректным):
Как я ни пробовал (менял секции, объединял их, менял местами), мне не удалось сделать так чтобы обе поисковые системы приняли этот файл и посчитали бы его корректным.
Возможен конечно вариант, когда я на сервере буду определять бота, который запрашивает файл и отдавать ему разные варианты, но это же очень неудобно, да и под все боты не напишешь правил. Так, например, сервис SemRush тоже не принимает такой файл. И думаю, большинство других сервисов так же, ибо этот параметр воспринимается только Яндексом.
Кто-нибудь использует параметр Clean-param на своих сайтах и использует одновременно И Google Webmaster Tools И Yandex.Webmaster? Как вы боретесь с ошибками (в Яндексе) дубликатов страниц с "ненужными" параметрами?
Дополнительно:
Каждому User-Agent - персональный (ну ладно, ладно, повзводно-групповой) robots.txt.
P.S. Имеется ввиду анекдот, который как раз и описывает аналогичную ситуацию.
Ответы:
Инструмент же пишет, что он не распознает синтаксис этой директивы, а другие при этом он будет учитывать.
Т.е. от использования этой директивы, другие правила не ломаются. В этом можно так же убедиться в этом инструменте, вставив любой url, который попадает под другие правила.
У меня долгое время была эта директива установлена, но я не помню проверял или нет в этом инструменте. В любом случае, в GSC предупреждений не высвечивалось.
На данный момент этой директивой не пользуюсь, так как перешел на использование фреймворка laravel и в нем написал посредник, который удаляет ненужные параметры, а нужные оставляет.
Как непроверенный вариант на практике, могу предложить такой вариант:
Disallow: /*?*amp
Disallow: /*?*__cf_chl
Я его только что придумал и быстро проверил. Вроде работает.
- Видел такое решение. Однако там где я его видел, было же и написано, что это решение не делает ровно то что нужно.
Данный метод запрещает индексировать (!) роботу данные url, но не выполняет ту функцию что делает параметр Clean-param, а именно удаляет (!) этот параметр, продолжая (!) индексировать url, но уже без параметра. Так же вторым эффектом является тот факт что УЖЕ проиндексированные (а так же url, на которые имеются явные ссылки на сайте) url не будут затронуты данным способом. Гугль их проиндексирует все равно, хотя и напишет что они запрещены в robots.txt
Для гугля кстати это вообще не нужно. В WMT можно просто указать игнорируемые параметры и он просто их "склеит" с основным url.
А вот у Яндекса - "все не как у людей" :) - Мне кажется, если Clean-param выполняет то, что вам нужно, не стоит от него отказываться. Как я уже говорил, весь robots от этого не ломается, вы сами в этом можете убедиться.
Вы пытаетесь избавиться от ошибки, которая возникает в инструменте проверки файла robots.
Clean-param воспринимается только яндексом. Если вы просто замените Clean-param в том месте, где он указан на скриншоте на то, что я предложил - он так и продолжится восприниматься только яндексом. Гугл его воспринимать не будет. Так что не гугл напишет, что ссылки запрещены в robots.txt, а яндекс.А вот это:
Clean-param, а именно удаляет (!) этот параметр, продолжая (!) индексировать url, но уже без параметра
Что это дает? Если скорость обхода, то яндекс и так быстро сканирует страницы.
- John Ship, Есть еще один вариант, но тоже не знаю как он будет в действии:
Указать canonical каждой странице без параметров. - John Ship, И еще, robots.txt можно сократить в вашем случае:
User-agent: * User-agent: Yandex Allow: / Disallow: /cdn-cgi/ User-agent: Yandex Clean-param: amp / Clean-param: cf_chl_managed_tk / Clean-param: cf_chl_captcha_tk /
User-agent: * User-agent: Yandex Allow: / Disallow: /cdn-cgi/ User-agent: Yandex Clean-param: amp / Clean-param: cf_chl_managed_tk / Clean-param: cf_chl_captcha_tk /
Не в тему, но пусть будет. Да и Allow: / как таковой не требуется.
- svm, скорость ни причем, Яндекс указывает такие url как дубликаты и предупреждает что это может понизить SEO параметры сайта.
Гугль действительно игнорирует эти ошибки и вопрос чисто дизайна (не аккуратненько). - svm, каноникал указан само собой, но вот гугль очень аккуратно (и без вопросов) канонинкал схватывает. А вот Яндекс - нет. Вернее, он конечно же должен брать каноникал, но в Yandex.Webmaster БЕЗ этого параметра указывает что есть критическая ошибка (даже при наличии каноникал).
- John Ship,
скорость ни причем, Яндекс указывает такие url как дубликаты
Так ведь
Disallow: /*?*amp
уже будет решать эту проблему. все amp страницы попадут в раздел "Запрет в robots.txt" и дублями являться не будут.
Если переводить на слова, то оно запрещает индексирование всех адресов, в которых присутствует слово "amp" после знака вопроса. И даже если там будут другие параметры. - John Ship, По поводу каноникла - да, я тоже слышал, что яндекс плохо его воспринимает. Даже на моем сайте это видно.
Выход красивый только один - удалять лишние параметры. Т.е. делать банальный 301 редирект на обычную страницу. А если нужны эти параметры для аналитики, то обрабатывать их на стороне сервера. - svm,
Если переводить на слова, то оно запрещает индексирование всех адресов, в которых присутствует слово "amp" после знака вопроса. И даже если там будут другие параметры.
вот в том то и дело что ИМЕННО ТАК и НЕ хочется. хочется чтобы игнорировался именно этот параметр и только он. И потом, как я уже говорил, это не затронет уже проиндексированные страницы. Просто робот не будет их во время обхода брать, но если они уже есть, само наличие robots.txt не запрещает индексировать и кешировать страницы, этот файл просто дает указание роботу не сканировать эти страницы. Но они могут попасть в индекс и любым другим способом (например редиректом 301 с других страниц или даже сайтов).
Выход красивый только один - удалять лишние параметры. Т.е. делать банальный 301 редирект на обычную страницу. А если нужны эти параметры для аналитики, то обрабатывать их на стороне сервера.
если бы этот параметр можно было бы удалить, то я бы наверное его бы и не ставил :)
во-первых, один из приведенных параметров - это признак того что страницы является AMP страницей, т.е. она должна быть и должна отличаться (там немножко другой дизайн) и индексироваться. НО (!) она действительно с точки зрения контента является дубликатом и надо как-то указать ПС что это дубликат. Гуглю достаточно указать canonical и все работает замечательно (собственно в документации по AMP все четко и расписано про AMP + canonical). А вот у Яндекса нет понятия AMP + canonical. Или оно есть, но какое-то недоработанное, такое что Yandex.Webmaster говорит о критической ошибке на сайте.
во-вторых, второй и третий параметры - это параметры, добавляемые сервисом cloudflare (и мной не регулируемые). Гугль видимо тоже понимает что с ними все ок и не создает никаких предупреждений или еще чего-то. А вот Яндекс, как всегда "не такой как все" :)
Просто не обращайте внимания на эти ошибки в Гугле, это ни на что не влияет. Тем более, что этот инструмент уже и скрыли от туда.
Для Яндекса этот Clean-param очень нужный инструмент. Реально помогает очистить индекс от мусора.
1. Как я делаю на тех проектах, где это актуально: отдельная директаива для Яндекдса, отдельная для Гугла.
И да, не на всех проектах это бывает нужно. Если проект не очень большой.
2. Иногда бывает достаточно только одной директивы Disallow, она валидна для всех ПС.
- Да я просто не люблю когда где-то выдаются ошибки. Я понимаю в общем-то, оно и с ошибками работает, но "не аккуратненько" (с) :)
Но я решил путем отдачи разных robots.txt разным ботам. Точное техническое решение уже и не помню. То ли на уровне конфига www-сервера, то ли свел все в один php-файл и там создавал его уже. Но суть в том что каждый из поисковиков видит свой robots.txt и все довольны.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для того чтобы настроить параметр Clean-param в файле robots.txt и обеспечить правильную индексацию сайта Google и Яндексом одновременно, вам необходимо следовать определенным шагам.
1. Ваш файл robots.txt должен содержать следующие строки:
User-agent: Google Disallow: /folder/ Clean-param: utm_source utm_medium User-agent: Yandex Disallow: /folder/ Clean-param: utm_source utm_medium
2. В данном примере мы указали, что параметры utm_source и utm_medium должны быть проигнорированы при индексации страниц поисковыми системами. Для каждого параметра Clean-param можно указать несколько значений, разделяя их пробелом.
3. После того как вы внесете необходимые изменения в файл robots.txt, необходимо убедиться, что он доступен для поисковых роботов. Для этого пройдите по адресу ваш_сайт/robots.txt и убедитесь, что файл открывается без ошибок.
4. После внесения изменений в файл robots.txt необходимо проиндексировать сайт Google и Яндексом с помощью соответствующих сервисов. Для Google это можно сделать через Google Search Console, а для Яндекса - через Яндекс.Вебмастер.
5. После проиндексации сайта необходимо периодически мониторить его индексацию и результаты поисковых запросов в обеих поисковых системах, чтобы убедиться, что все страницы индексируются правильно и соответствуют вашим ожиданиям.
Следуя этим шагам, вы сможете успешно настроить параметр Clean-param в файле robots.txt и добиться правильной индексации сайта Google и Яндексом одновременно.