Настройка файла .htaccess для индексации сайта

Настройка основного зеркала сайта
Основной ошибкой является, когда сайт доступен по двум адресам, с www или без:

www.site.ru
site.ru

Настраиваем, чтобы сайт был доступен по одному из имени. Если же пользователь набирает второе имя, то перенаправление идет на первое имя сайта:

  • главное зеркало с www

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

  • главное зеркало без www

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

Удаление дубля главной страницы /index.php

Сайт может быть доступен как:

site.ru и как 
site.ru/index.php

  • удаление /index.php из индексации:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

Исправляем слэш в URL адресе

Страница может быть доступна со слэшем на конце и без него. Иногда адрес без слэша на конце вызывает ответ сервера 404

site.ru/catalog
site.ru/catalog/

  • удаление слэша на конце URL адреса:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

  • добавление слэша в конец URL адреса:

RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]

Ответ сервера 301. Редирект с одной страницы на другую
Если адрес страницы поменялся и необходимо сделать перенаправление на новую, нужно прописать:

Redirect /old.php http://site.ru/new.php


RewriteEngine On! должен быть включен

Проверка ответа сервера
После настройки файла .htaccess или других действий на сайте, необходимо убедиться в правильности работы сайта, например сервис Яндекса Проверка ответа сервера