Назад

Как устранить дубли страниц на сайте через .htaccess

Главная
Блог
Как устранить дубли страниц на сайте через .htaccess

Дубли страниц — одна из самых частых SEO-проблем, которая приводит к:

  • Размыванию веса страниц (PageRank делится между дублями)

  • Снижению скорости индексации (поисковые роботы тратят ресурсы на обход одинаковых URL)

  • Ошибкам в аналитике (трафик распределяется по разным адресам)

В этой статье разберём основные причины дублей и готовые решения через .htaccess, включая специфику для Битрикс.

1. Как работают редиректы в .htaccess

Файл .htaccess позволяет управлять перенаправлениями через модуль mod_rewrite.

Основные принципы:

  • Правила обрабатываются сверху вниз.

  • RewriteCond — условия, RewriteRule — само правило.

  • Флаг [R=301] — постоянный редирект (лучший для SEO).

  • Флаг [L] (Last) — остановка обработки дальнейших правил.

Перед внедрением:
✔ Протестируйте редиректы (например, через curl -I или Redirect Inspector).
✔ Сделайте бэкап .htaccess — ошибки могут "положить" сайт.

2. Основные редиректы для устранения дублей

1. Редирект с HTTP на HTTPS

Лучше настраивать через хостинг, но если нужно в .htaccess:

RewriteCond %{HTTPS} off  
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]  

2. Редирект с www на без www (или наоборот)

Без www → с www:

RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]  
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]  

С www → без www:

RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]  
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]  

3. Добавление слеша / в конец URL

(если его нет и это не файл)

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_URI} !\..{1,10}$  
RewriteCond %{REQUEST_URI} !(.*)/$  
RewriteRule ^(.*)$ https://site.ru/$1/ [L,R=301]  

4. Удаление index.php и index.html

(редирект на "чистый" URL)

RewriteCond %{REQUEST_METHOD} =GET  
RewriteCond %{REQUEST_URI} ^(.*)/index\.(php|html)$  
RewriteRule ^(.*)$ %1/ [R=301,L]  

3. Дополнительные редиректы (для SEO)

Удаление UTM-меток и лишних параметров

(если они создают дубли)

RewriteCond %{QUERY_STRING} ^(.*)(utm_source|utm_medium|utm_campaign)=[^&]+(.*)$  
RewriteRule ^(.*)$ /$1?%1%3 [R=301,L]  

Приведение URL к нижнему регистру (для Битрикс)

(если CMS чувствительна к регистру)

RewriteCond %{REQUEST_URI} [A-Z]  
RewriteRule ^(.*)$ ${lc:$1} [R=301,L]  

Редирект с мобильной версии на основную (если не нужна отдельная)

RewriteCond %{HTTP_USER_AGENT} (Android|iPhone|iPad) [NC]  
RewriteCond %{HTTP_HOST} !^m\.site\.ru$  
RewriteRule ^(.*)$ https://m.site.ru/$1 [R=301,L]  

4. Полный пример .htaccess для Битрикс

<IfModule mod_rewrite.c>  
  Options +FollowSymLinks  
  RewriteEngine On  

  # HTTP → HTTPS  
  RewriteCond %{HTTPS} off  
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]  

  # www → без www  
  RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]  
  RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]  

  # Добавление /  
  RewriteCond %{REQUEST_FILENAME} !-f  
  RewriteCond %{REQUEST_URI} !\..{1,10}$  
  RewriteCond %{REQUEST_URI} !(.*)/$  
  RewriteRule ^(.*)$ https://site.ru/$1/ [L,R=301]  

  # Удаление index.php / index.html  
  RewriteCond %{REQUEST_METHOD} =GET  
  RewriteCond %{REQUEST_URI} ^(.*)/index\.(php|html)$  
  RewriteRule ^(.*)$ %1/ [R=301,L]  

  # Битрикс-специфичные правила  
  RewriteCond %{REQUEST_FILENAME} !-f  
  RewriteCond %{REQUEST_FILENAME} !-l  
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$  
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]  
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]  
</IfModule>  

5. Проверка и тестирование

Как проверить редиректы?

  • Через браузер (DevTools → вкладка Network → смотрим статус 301).

  • Через curl:

    curl -I http://site.ru/old-url

  • Через онлайн-инструменты (например, Redirect Checker).

Что делать, если редиректы не работают?

  1. Проверить, включён ли mod_rewrite на сервере.

  2. Убедиться, что нет конфликтующих правил.

  3. Проверить кеш браузера (используйте инкогнито-режим).

Вывод

Итоговый чек-лист:

  • Настроен редирект HTTP → HTTPS
  • Убраны дубли www / без www
  • Добавлены слеши / где нужно
  • Удалены index.php и index. Проверены UTM-метки и регистр URL

Готово! Теперь ваш сайт защищён от дублей, а поисковые системы будут правильно индексировать страницы.

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи