301 редирект. Сделать переадресацию на другой сайт, c www на без www
- Stats: 2200 2
- Author: admin
- Category: Різне, Статті
- Comments: Комментариев нет
Редирект 301 или 301 Permanent Redirect — это правило, которое автоматически переадресовывает пользователя на другой адрес страницы. С его помощью вы можете склеить старые страницы с новыми или перенести сайт на другой домен, убрать многие дубли с сайта и многое другое. Крайне полезная вещь — поэтому нужно научиться делать его правильно!
Так же при 301 редиректе происходит склейка тИЦ и PR — т.е. вы можете сохранить старое значение на новом адресе. Вы можете нисколько не потерять в глазах поисковых систем.
Как настроить 301 редирект в htaccess
Файл под названием .htaccess находится в главной категории вашего сайта. Это служебный файл, в котором мы будем указывать правила склейки. Открываем файл блокнотом (рекомендую notepad++, чтобы не было проблем с кодировкой).
Общий шаблон для .htaccess, которым мы будем пользоваться:
1 2 3 |
Options +FollowSymLinks RewriteEngine On #Здесь указываем правила |
Все правила записываются в виде:
1 2 3 |
RewriteCond [Сравнение] [Условие] [Флаги] RewriteCond [Сравнение] [Условие] [Флаги] RewriteRule [Шаблон] [Подстановка] [Флаги] |
Редирект с index.php на главную
Чтобы настроить его вам нужно прописать в вашем файле следующий код, который будет перенаправлять посетителей с адреса site.ru/index.php на site.ru:
1 2 |
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP RewriteRule ^index\.php$ http://site.ru/ [R=301,L] |
Если вам так же нужно сделать переадресацию с index.html, то просто в коде выше замените .php на .html
Склеиваем алиасы сайта
Если у вас несколько доменов и вы хотите все их перенаправлять на основной сайт, то используем:
1 2 3 4 |
RewriteCond %{HTTP_HOST} ^vash-sait.com$ [OR,NC] RewriteCond %{HTTP_HOST} ^www.vash-sait.com$ [NC] RewriteCond %{REQUEST_URI} !^/robots.* RewriteRule ^(.*)$ http://vash-sait.ru/$1 [R=301,L] |
Обратите внимание на первые 2 строки, там указано зеркало в зоне .com, если у вас иная или несколько зон, то добавляем правила.
Редирект с www на без www
Для того, чтобы склеить зеркала и выбрать основным домен без www прописываем:
1 2 |
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L] |
Редирект с домена без www на домен с www
Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:
1 2 |
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L] |
301 редирект страниц со слэшем и без
Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:
1 2 3 |
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L] |
Если вам нужно наоборот оставить слэш в конце урла, то вам нужен данный вариант:
1 2 3 4 |
RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301] |
Если у вас по какой-то причине появились урлы типа site.ru/category//article.html
, то юзаем код:
1 2 |
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L] |
где, «//» можно заменить на «—» или любые сдвоенные символы в урле.
Массовая замена категории
Бывает, что вы переименовали категорию, а за ней закреплены тысячи урлов. Чтобы не состарится во время написания тысяч одинаковых перенаправлений юзаем:
1 |
RewriteRule ^(.*)/old-category/(.*)$ $1/new-category/$2 [R=301,L] |
Если у вас категория идет сразу после домена (типа site.ru/category/), то используем другой вариант:
1 |
RewriteRule old-category /(.*) / old-category /$1 [R=301,L] |
Редирект на новую страницу
Самый простой редирект со страницы на страницу, для это просто пропишите так:
1 |
Redirect 301 /old-post.html http://new-site.ru/new-post.html |
Где old-post.html — это ваша старая страница, а new-site.ru/new-post.html — это новая страница и она может быть на любом домене (включая ваш текущий домен).
Редирект для url с параметрами
Страницы с параметрами редиректятся сложнее, возьмем пример http://site.ru/page.php?sort=articles. Параметр здесь «sort=articles». Код будет следующим:
1 2 |
RewriteCond %{QUERY_STRING} sort=articles RewriteRule .* http://site.ru/page.php? [R=301,L] |
Работаем с расширениями
Убираем .html из url (для удаления .php не забудьте заменить $1.html на $1.php):
1 |
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L] |
Меняем .php на .html в урлах и наоборот (не забываем поменять местами в коде):
1 |
RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html |
301 редирект на новый домен
Этот пункт я выделил отдельно, т.к. он больше связан с переносом на другой домен. Тут есть важный момент, это не упустить директиву по правке роботса — она указана на 3 строке кода.
1 2 3 4 5 6 |
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1 [L] RewriteCond %{HTTP_HOST} ^site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L] |
С помощью таких не хитрых махинаций мы избавимся от дублей страниц, тем самым улучшив нашу внутреннюю оптимизацию и соответственно качество сайта.
Переадресация всех запросов на сайт на отдельную страницу нового сайта
1 2 3 |
RewriteEngine On RewriteBase / RewriteRule ^(.*)$ http://сайт.com/desired_page/ [L,R=permanent] |
Переадресация со всех несуществующих поддоменов на Ваш сайт
1 2 3 4 |
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^(.*).сайт.com [NC] RewriteRule ^(.*)$ http://сайт.com/$1 [L,R=permanent] |
Вот и все, если Вы хотите «поблагодарить» наше IT сообщество — у вас есть такая возможность: справа есть варианты для пожертвований на развитие портала. Или поделитесь статьей в ваших соц.сетях через сервис ниже.
Отправить ответ