Для обнаружения проблемы дублирования страниц и очистки ссылок от лишних параметров я использовал GSC.
Google Search Console — это бесплатный инструмент от Google для вебмастеров, который позволяет отслеживать индексацию сайта и анализировать ошибки при индексировании. С помощью Search Console можно улучшить видимость сайта в результатах поиска Google, получая данные о запросах, по которым сайт показывается в выдаче, количестве кликов и позиции в результатах поиска.
Увидели проблему. Страницы, которые не проиндексированы. В данном случае на сайте были страницы без слеша на конце ссылки и со слешем. Такие страницы были с одинаковым контентом.
Хоть поисковик такие страницы не проиндексировал, от них лучше избавиться. Вообще, в идеале надо следовать правилу, когда чем меньше ошибок показывает GSC, тем лучше.
В нашем случае часть страниц из списка были дублем. Плюс в том, что у нас была указана правильная каноническая ссылка.
Что написано в документации Google о дублировании страниц с прописанными каноническими ссылками:
Что я сделал
Экспортировал все страницы из этого отчёта
Решение проблемы номер 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 с разными параметрами.
Заключение
После всех этих работ необходимо сделать две вещи:
- Отправил запрос на проверку исправлений непосредственно из GSC:
2. Отправить на переобход страниц через быструю индексацию IndexNowю
Данный переобход я рекомендую делать только в случае, если у вас проблемные страницы есть в индексе и надо быстро показать поисковикам, что в них проведены корректировки.
При отправлении непроиндексированных страниц они могут появиться в индексе, чего нам не стоит допускать. Тогда мы столкнёмся с другими проблемами, которые надо исправлять уже иначе.