Для обнаружения проблемы дублирования страниц и очистки ссылок от лишних параметров я использовал GSC.

Google Search Console — это бесплатный инструмент от Google для вебмастеров, который позволяет отслеживать индексацию сайта и анализировать ошибки при индексировании. С помощью Search Console можно улучшить видимость сайта в результатах поиска Google, получая данные о запросах, по которым сайт показывается в выдаче, количестве кликов и позиции в результатах поиска.

Избавление сайта от дублей Веб-студия Шанти
Избавление сайта от дублей 6

Увидели проблему. Страницы, которые не проиндексированы. В данном случае на сайте были страницы без слеша на конце ссылки и со слешем. Такие страницы были с одинаковым контентом.

Хоть поисковик такие страницы не проиндексировал, от них лучше избавиться. Вообще, в идеале надо следовать правилу, когда чем меньше ошибок показывает GSC, тем лучше.

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

Избавление сайта от дублей Веб-студия Шанти
Избавление сайта от дублей 7

Что написано в документации Google о дублировании страниц с прописанными каноническими ссылками:

Избавление сайта от дублей Веб-студия Шанти
Избавление сайта от дублей 8

Что я сделал

Экспортировал все страницы из этого отчёта

Избавление сайта от дублей Веб-студия Шанти
Избавление сайта от дублей 9

Решение проблемы номер 1

Настроил 301-редирект со страниц без слэша через .htaccess следующей инструкцией mod_rewrite:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ https://www.домен.ru/$1/ [L,R=301]

Расшифровка:

  • RewriteRule — директива для создания правила перезаписи URL
  • %{REQUEST_URI} — переменная, которая содержит оригинальный запрошенный URL
  • %{REQUEST_FILENAME} — это переменная в Apache/Nginx, которая содержит полный путь к запрашиваемому файлу на сервере.
  • [R=301,L] — флаги правила:
    • R=301 — возвращает редирект с кодом 301
    • L — последнее правило, если совпадение найдено
  • ^ — начало строки
  • (.*\[^/]) — шаблон для захвата (регулярка):
    • .* — любые символы
    • \[^/] — кроме слеша
  • $ — конец строки
  • https://www.домен.ru/$1/ — шаблон замены:
    • $1 — ссылка на захваченную подстроку в шаблоне
    • добавляет https://www. и / в конец

Таким образом мы добавили к конце ссылок слэш, как он должен быть на сайте. Именно такие страницы находятся в индексе.

Решение проблемы номер 2

Просмотрев выгрузку я заметил, что у нас есть ссылки, которые когда-то выдавали отдельную мобильную amp-версию сайта, но от которой когда-то отказались. Если таких страниц больше нет, эти ссылки должны выдавать 404-ошибку, но в нашем случае это не работало.

В настоящее время использование мобильных AMP-версий сайтов сокращается. Есть несколько причин этого:

  • Google заявил, что мобильный AMP больше не даёт преимуществ в ранжировании. Теперь приоритет отдается мобильной версии на обычном HTML.
  • AMP накладывает ограничения на использование JavaScript, что усложняет создание сложных интерактивных элементов.
  • Поддержка AMP требует дополнительных ресурсов на разработку и поддержку. Проще создать быструю мобильную версию сайта на обычном HTML.
  • AMP часто кэшируется Google, из-за чего контент не обновляется для пользователя.
  • Прогресс в скорости мобильного интернета и оптимизации кода снижает преимущества AMP.

В целом, AMP был нужен раньше для быстрой загрузки на медленном мобильном интернете. Сейчас же на первый план выходит удобство разработки и использование современных интерактивных технологий.

Для исправления проблемы с amp, которых не существует, прописал clean param. Пробежавшись по всему списку выгрузки из GSC убрал большую часть параметров, которые отображаются в явном виде методом GET.

CleanParam: amp, post_type, attribute*, utm*, p=*

В директиве CleanParam можно использовать знак * для запрета группы похожих параметров.

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

User-agent: *

CleanParam: 
  amp
  post_type

CleanParam: 
  attribute*
  page
  filter

Здесь мы разделили параметры на две группы, для каждой из которых прописали отдельную директиву CleanParam.

Эффект будет такой же, как если бы все параметры были перечислены в одной директиве.

Такое разделение может пригодиться, если, например, нужно:

  • Разграничить параметры по разным разделам сайта
  • Разнести общие и индивидуальные параметры
  • Улучшить читаемость при большом количестве параметров

Главное, чтобы синтаксис каждой директивы CleanParam соблюдался и параметры были разделены запятыми или &.

Так что использовать одну или несколько директив — допустимые варианты в robots.txt.

Также можно добавить запрет на такие распространенные параметры:

  • page — номера страниц пагинации
  • sort — сортировка контента
  • filter — фильтры товаров или контента
  • lang — языковые версии
  • escaped_fragment — часть хэшей страниц одностраничников

Это позволит избежать дублирования URL с разными параметрами.

Заключение

После всех этих работ необходимо сделать две вещи:

  1. Отправил запрос на проверку исправлений непосредственно из GSC:
Избавление сайта от дублей Веб-студия Шанти
Избавление сайта от дублей 10

2. Отправить на переобход страниц через быструю индексацию IndexNowю

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

При отправлении непроиндексированных страниц они могут появиться в индексе, чего нам не стоит допускать. Тогда мы столкнёмся с другими проблемами, которые надо исправлять уже иначе.

Специалист в области создания и продвижения сайтов в интернете, обладающий знаниями в веб-разработке и SEO.
Пишите: в Telegram