Редирект — это перенаправление пользователя с одного URL на другой. Настроить его можно разными способами:
- через HTML-код,
- с помощью скрипта PHP,
- в файле web.config,
- в файле .htaccess (301) и др.
О последнем способе мы расскажем в статье.
Какими бывают редиректы
Когда подойдет редирект через htaccess
Как сделать 301 редирект через htaccess
- .htaccess-редирект с одного домена на другой
- .htaccess-редирект на домен с WWW и без WWW
- .htaccess-редирект для отдельного IP-адреса
- .htaccess-редирект на http://
- .htaccess-редирект на https://
- .htaccess-редирект с главной страницы, кроме остальных страниц сайта
- .htaccess-редирект с GET-параметрами
- .htaccess-редирект с массовой склейкой
- редирект с одной страницы на другую
Какими бывают редиректы
Существуют разные типы перенаправлений с кодом 3хх. Наиболее популярные из них:
- 300 редирект — множественный выбор,
- 301 редирект — постоянный,
- 302 редирект — временный,
- 303 редирект — «смотрите другое»,
- 305 редирект — «используйте прокси».
301 редирект (301 redirect) — это постоянный тип перенаправления. Он указывает на то, что искомая страница окончательно перемещена в другое место. Рекомендуем использовать 301 редирект, если вы перенесли содержимое на другую страницу и хотите перенаправить трафик.
Когда подойдет редирект через htaccess
.htaccess — это конфигурационный файл веб-сервера Apache, который позволяет управлять настройками веб-ресурса. Он находится в корневой директории сайта. Главная особенность .htaccess — возможность не только настроить редирект на другой сайт, но и перенаправить отдельные страницы.
Переадресация в htaccess подойдет для точечной настройки редиректов, например:
- с одного домена на другой домен;
- 301 редирект с одной страницы сайта на другую;
- со всех страниц, кроме стартовой;
- на домен с www и без www;
- для одного или нескольких IP-адресов;
- с главной страницы, исключив другие страницы сайта;
- на https:// и http:// (301 редирект);
- с массовой склейкой;
- с GET-параметрами.
Как сделать 301 редирект через htaccess
Важно: если вы используете кириллический домен, его нужно указывать в формате Punycode.
Для настройки 301 редиректа необходимо авторизоваться в панели управления.
.htaccess-редирект с одного домена на другой
Перейдите в директорию домена, с которого нужно настроить редирект. В файл .htaccess добавьте строки:
RewriteCond %{HTTP_HOST} old-domain.ru
RewriteRule (.*) http://new-domain.ru/$1 [R=301,L]
Где:
- old-domain.ru — домен, с которого вы настраиваете перенаправление;
- new-domain.ru — домен, на который нужно перенаправить пользователей.
Если вы хотите настроить 301 редирект со страницы на страницу, укажите ее в директиве. Например:
RewriteCond %{HTTP_HOST} old-domain.ru/contacts
RewriteRule (.*) http://new-domain.ru/contacts/$1 [R=301,L]
Где:
- old-domain.ru/contacts — адрес старой страницы,
- new-domain.ru/contacts — адрес новой страницы.
.htaccess-редирект на домен с WWW и без WWW
Перейдите в директорию сайта и откройте файл .htaccess. Для перенаправления на домен без WWW добавьте строки:
RewriteCond %{HTTP_HOST} ^www.domain.ru$ [NC]
RewriteRule ^(.*)$ http://domain.ru/$1 [R=301,L]
Вместо domain.ru укажите доменное имя вашего сайта.
Если вы хотите, наоборот, перенаправить трафик на поддомен WWW, используйте следующие строки:
RewriteCond %{HTTP_HOST} ^domain.ru
RewriteRule (.*) http://www.domain.ru/$1 [R=301,L]
Вместо domain.ru укажите доменное имя вашего сайта.
.htaccess-редирект для отдельного IP-адреса
Перейдите в корневую папку сайта. Откройте .htaccess и добавьте строки:
RewriteCond %{REMOTE_ADDR} 123.123.123.123
RewriteRule ^(.*)$ http://domain.ru [R=301,L]
Где:
- 123.123.123.123 — IP-адрес, для которого нужно настроить редирект;
- domain.ru — доменное имя вашего сайта.
.htaccess-редирект на http://
Перейдите в корневую папку сайта. Откройте .htaccess и добавьте строки:
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ http://domain.ru/$1 [R=301,L]
Вместо domain.ru укажите доменное имя вашего сайта.
.htaccess-редирект на https://
Перейдите в корневую папку сайта. Откройте .htaccess и добавьте строки:
SetEnvIf X-Forwarded-Proto https SERVER_PORT=443
SetEnvIf X-Forwarded-Proto https HTTPS=on
RewriteCond %{HTTP:HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
.htaccess-редирект с главной страницы, кроме остальных страниц сайта
Перейдите в директорию сайта. Откройте .htaccess и добавьте строки:
RewriteRule ^$ https://domain.ru [R=301,L]
Вместо domain.ru укажите доменное имя вашего сайта.
.htaccess-редирект с GET-параметрами
Перейдите в директорию сайта. Откройте .htaccess и добавьте строки:
RewriteRule ^(.*)$ http://domain.ru/ [R=301,L]
Вместо domain.ru укажите доменное имя вашего сайта.
.htaccess-редирект с массовой склейкой
Перейдите в директорию сайта и откройте .htaccess. Чтобы настроить перенаправление всех страниц на основной домен, добавьте строки:
RewriteRule ^(.*)index\.(php|html|htm)$ http://domain.ru/$1 [R=301,L]
Вместо domain.ru укажите доменное имя вашего сайта.
Редирект с одной страницы на другую
Переадресация позволяет направлять посетителя на файл new.html когда он запрашивает файл old.html. Чтобы увидеть этот пример на практике, достаточно добавить следующую строку в файл .htaccess, расположенный в папке сайта. Строка должна быть введена как одна строка без переносов: