Настройка файла .HTACCESS для SEO
10 минут
25432
При первичной оптимизации сайта, необходимо провести следующие настройки в файле .htaccess, который расположен в корневой папке вашего сайта.
Операторы .htaccess
- . — любой символ
- $ — ограничение справа
- ^ — ограничение слева
- — 0 и более символов
- + — 1 и более символов
- [] — диапазон значений<
- \ — экранирование
- () — переменная
Выбор главного зеркала
Перед тем как продвигать сайт необходимо определиться, какой именно адрес вы будете продвигать.
Т.е. с WWW (http://www.domain.ru) или без WWW (http://domain.ru)
Если этого не сделать сначало, то поисковые системы по разному могут определить главное зеркало, а значит у Вас появятся дубли страниц в индексе.
Каждая страница сайта, должна открываться только по одному URL адресу!
Для тех, кто не настроил главное зеркало в самом начале, рекомендую сделать так.
- Заходим в Яндекс;
- Вводим адрес нашего сайта;
- Смотрим, какое зеркало присвоено.
То, что показывается внизу браузера и есть главное зеркало по-умолчанию в поисковой систем Яндекс.
Давайте посмотрим, что определяет поисковик Google.
Проблема на лицо!
- В поисковой системе Яндекс, сайт открывается по адресу http://www.as-pushkin.ru
- В поисковой системе Google, сайт открывается по адресу http://as-pushkin.ru
В чем собственно заключается проблема?
- Каждая страница имеет 2 дубля, что снижает уникальность контента;
- Если проект большой, то снижается скорость индексации проекта;
- <Естественные ссылки будут размещаться по разному, что снизет их эффективность.
Редирект в файле .htaccess
Выберите, как вы хотите, что бы открывался Ваш сайт. С WWW. или без WWW.
Рекомендую использовать без WWW.
Если сайт старый, то рекомендую выбирать на основе ссылочной массы, каких ссылок больше, то и определять главным зеркалом! Ссылки на сайт, можно посмотреть в сервисе linkpad.ru
Как сделать редирект на без WWW
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.as-pushkin\.ru$ [NC]
RewriteRule ^(.*)$ http://as-pushkin.ru/$1 [R=301,L]
Как сделать редирект с www
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^as-pushkin\.ru$ [NC]
RewriteRule ^(.*)$ http://www.as-pushkin.ru/$1 [R=301,L]
Выделенный домен, заменить на свой адрес!
Для использования необходимо удостовериться, что в httpd.conf подключен модуль mod_rewrite, а также влючена опция FollowSymLinks. На обычных хостингах этот модуль включен.
Редирект без слеша на конце
Следующая, частая проблема с дублированием - это открытие страниц со слешем и без слеша на конце URL адреса.
т.е. страницы сайта могут открываться по адресам:
- http://domain.ru/contact/
- http://domain.ru/contact
Бывают еще более худшие варианты
- http://domain.ru/contact.html/
- http://domain.ru/contact.html
Что бы избежать этой проблемы и настроить редирект без слеша, добавьте в .htaccess такой код.
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L]
Если же наоборот, вы хотите сделать редирект со слешем в конце, то код будет таким.
RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]
301 редирект в .htaccess
301 редирект - это постоянное перенаправление пользователя с одного URL адреса на другой.
Редирект страницы на новый адрес
Страница имеет некорректный адрес и находится по ряду поисковых запросов в выдаче. Вы хотите его исправить на более красивый.
http://domain.ru/cont на http://domain.ru/contact
Необходимо добавить следующий код:
Redirect 301 /cont http://domain.ru/contact
Редирект каталога или категории сайта на новый адрес
Если вы используете некорректный адрес категории сайта, то это тоже можно исправить.
RewriteRule ^okna1pvh /okna-pvh/$1 [R=301,L]
Редирект сайта на новый домен
Иногда необходимо перенести старый сайт на новый, возможно более красивый домен. Что бы не потерять позиции сайта и трафик, пропишите на старом сайте следующий код в .htaccess
Options +FollowSymLinks
RewriteEngine<on
RewriteCond%{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond%{HTTP_HOST} ^old-domain\.ru
RewriteRule ^(.*)$ http://new-domain.ru/$1 class="sqbracket"> [R=301,L]
RewriteCond%{HTTP_HOST}^www.old-domain\.ru
RewriteRule ^(.*)$ http://new-domain.ru/$1 [R=301,L]
После этого в файле Robots.txt добавьте следующий код<
User-agent: Yandex
Host: new-domain.ru
User-agent: *
Disallow:
Sitemap: http://new-domain.ru/sitemap.xml
Перенос сайта на другую CMS
Следующий момент. Когда вы переносите сайт на новую систему управления, то часто страницы могут иметь иные расширения.
- Было - http://domain.ru/okna.html
- Стало -http://domain.ru/okna.php
RedirectMatch 301 (.*)\.html$ http://domain.ru$1.php
Редирект с index.php на корень сайта
Для редиректа 301 вида “ваш_сайт/index.php” на “http://ваш_сайт/” :
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://ваш_сайт/ [R=301,L]
Базовая настройка для файла .htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.as-pushkin\.ru$ [NC]
RewriteRule ^(.*)$ http://as-pushkin.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTPRewriteRule ^index\.php$ http://as-pushkin.ru/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L]
Копируйте этот код себе, заменяйте домен на свой и сохраняйте в коде файла конфигураций.
Как настроить файл .htaccess для домена .рф
[UPDATE] 12.09.2015 Сами столкнулись с такой задачей. Поэтому выкладываем готовое решение.
Стоит заметить, что в коде нет кирилических значений! Они не воспринимаются. Домен РФ нужно перевести в PinyCod (Просто вставьте в поисковую строку Яндекса свой домен). Будьте внимательны с 4-й строкой! Там .рф (.xn--p1ai) отделен символом \ -оставьте так!
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.xn------5cdbacableitfk0bfa3abl5cjhir7bifirx\.xn--p1ai$ [NC]
RewriteRule ^(.*)$ http://xn------5cdbacableitfk0bfa3abl5cjhir7bifirx.xn--p1ai/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://xn------5cdbacableitfk0bfa3abl5cjhir7bifirx.xn--p1ai/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://xn------5cdbacableitfk0bfa3abl5cjhir7bifirx.xn--p1ai/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://xn------5cdbacableitfk0bfa3abl5cjhir7bifirx.xn--p1ai/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.php\ HTTP
RewriteRule ^([^.]+)\.php$ http://xn------5cdbacableitfk0bfa3abl5cjhir7bifirx.xn--p1ai/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.php [L]