Директива Clean-param

  1. Как использовать директиву Clean-param
  2. Синтаксис директивы
  3. Дополнительные примеры
  4. Disallow и Clean-param
Примечание. Иногда для закрытия таких страниц используется директива Disallow. Рекомендуем использовать Clean-param, так как эта директива позволяет передавать основному URL или сайту некоторые накопленные показатели.

Как использовать директиву Clean-param

Заполняйте директиву Clean-param максимально полно и поддерживайте ее актуальность. Новый параметр, не влияющий на контент страницы, может привести к появлению страниц-дублей, которые не должны попасть в поиск. Из-за большого количества таких страниц робот медленнее обходит сайт. А значит, важные изменения дольше не попадут в результаты поиска.

Робот Яндекса, используя эту директиву, не будет многократно перезагружать дублирующуюся информацию. Таким образом, увеличится эффективность обхода вашего сайта, снизится нагрузка на сервер.

Например, на сайте есть страницы:

www.example.com/some_dir/get_book.pl?ref=site_1&book_id=123
www.example.com/some_dir/get_book.pl?ref=site_2&book_id=123
www.example.com/some_dir/get_book.pl?ref=site_3&book_id=123

Параметр ref используется только для того, чтобы отследить с какого ресурса был сделан запрос и не меняет содержимое, по всем трем адресам будет показана одна и та же страница с книгой book_id=123. Тогда, если указать директиву следующим образом:

User-agent: Yandex
Clean-param: ref /some_dir/get_book.pl

Робот Яндекса сведет все адреса страницы к одному:

www.example.com/some_dir/get_book.pl?book_id=123

Если на сайте доступна такая страница, именно она будет участвовать в результатах поиска.

Чтобы директива применялась к параметрам на страницах по любому адресу, не указывайте адрес:

User-agent: Yandex
Clean-param: utm
Совет. Директива Clean-Param является межсекционной, поэтому может быть указана в любом месте файла. Если вы указываете другие директивы именно для робота Яндекса, перечислите все предназначенные для него правила в одной секции. При этом строка User-agent: * будет проигнорирована.

Синтаксис директивы

Clean-param: p0[&p1&p2&..&pn] [path]

В первом поле через символ & перечисляются параметры, которые роботу не нужно учитывать. Во втором поле указывается префикс пути страниц, для которых нужно применить правило.

Префикс может содержать регулярное выражение в формате, аналогичном файлу robots.txt, но с некоторыми ограничениями: можно использовать только символы A-Za-z0-9.-/*_. При этом символ * трактуется так же, как в файле robots.txt: в конец префикса всегда неявно дописывается символ *. Например:

Clean-param: s /forum/showthread.php

означает, что параметр s будет считаться незначащим для всех URL, которые начинаются с /forum/showthread.php. Второе поле указывать необязательно, в этом случае правило будет применяться для всех страниц сайта.

Регистр учитывается. Действует ограничение на длину правила — 500 символов. Например:

Clean-param: abc /forum/showthread.php
Clean-param: sid&sort /forum/*.php
Clean-param: someTrash&otherTrash

Дополнительные примеры

#для адресов вида:
www.example1.com/forum/showthread.php?s=681498b9648949605&t=8243
www.example1.com/forum/showthread.php?s=1e71c4427317a117a&t=8243

#robots.txt будет содержать:
User-agent: Yandex
Clean-param: s /forum/showthread.php
#для адресов  вида:
www.example2.com/index.php?page=1&sid=2564126ebdec301c607e5df
www.example2.com/index.php?page=1&sid=974017dcd170d6c4a5d76ae

#robots.txt будет содержать:
User-agent: Yandex
Clean-param: sid /index.php
#если таких параметров несколько:
www.example1.com/forum_old/showthread.php?s=681498605&t=8243&ref=1311
www.example1.com/forum_new/showthread.php?s=1e71c417a&t=8243&ref=9896

#robots.txt будет содержать:
User-agent: Yandex
Clean-param: s&ref /forum*/showthread.php
#если параметр используется в нескольких скриптах:
www.example1.com/forum/showthread.php?s=681498b9648949605&t=8243
www.example1.com/forum/index.php?s=1e71c4427317a117a&t=8243

#robots.txt будет содержать:
User-agent: Yandex
Clean-param: s /forum/index.php
Clean-param: s /forum/showthread.php

Disallow и Clean-param

Директива Clean-param не требует обязательного сочетания с директивой Disallow.

User-agent: Yandex
Disallow:
Clean-param: s&ref /forum*/showthread.php

#идентично:
User-agent: Yandex
Clean-param: s&ref /forum*/showthread.php

Так как директива Clean-param межсекционная, ее можно указывать в любом месте файла, вне зависимости от расположения директив Disallow и Allow. Исполнение Disallow при этом имеет приоритет и, если адрес страницы запрещен к индексированию в Disallow и одновременно ограничен в Clean-param, страница проиндексирована не будет.

User-agent: Yandex
Disallow:/forum
Clean-param: s&ref /forum*/showthread.php

В этом случае страница https://example.com/forum?ref=page будет считаться запрещенной. Не указывайте директиву Disallow для страниц, если хотите только удалить из поиска варианты ссылок с GET-параметрами.