Раздел помощи SpaceWeb

Как настроить редирект через .htaccess

13 дек, 2023

Редирект — это перенаправление пользователя с одного URL на другой. Настроить его можно разными способами:

  • через HTML-код,
  • с помощью скрипта PHP,
  • в файле web.config,
  • в файле .htaccess (301) и др.

О последнем способе мы расскажем в статье.

Какими бывают редиректы
Когда подойдет редирект через htaccess
Как сделать 301 редирект через 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 добавьте строки:

RewriteEngine On
RewriteCond %{HTTP_HOST} old-domain.ru
RewriteRule (.*) http://new-domain.ru/$1 [R=301,L]

Где:

  • old-domain.ru — домен, с которого вы настраиваете перенаправление;
  • new-domain.ru — домен, на который нужно перенаправить пользователей.

Если вы хотите настроить 301 редирект со страницы на страницу, укажите ее в директиве. Например:

RewriteEngine On
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 добавьте строки:

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

Вместо domain.ru укажите доменное имя вашего сайта.
Если вы хотите, наоборот, перенаправить трафик на поддомен WWW, используйте следующие строки:

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

Вместо domain.ru укажите доменное имя вашего сайта.

.htaccess-редирект для отдельного IP-адреса

Перейдите в корневую папку сайта. Откройте .htaccess и добавьте строки:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} 123.123.123.123
RewriteRule ^(.*)$ http://domain.ru [R=301,L]

Где:

  • 123.123.123.123 — IP-адрес, для которого нужно настроить редирект;
  • domain.ru — доменное имя вашего сайта.

.htaccess-редирект на http://

Перейдите в корневую папку сайта. Откройте .htaccess и добавьте строки:

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

Вместо domain.ru укажите доменное имя вашего сайта.

.htaccess-редирект на https://

Перейдите в корневую папку сайта. Откройте .htaccess и добавьте строки:

RewriteEngine on
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 и добавьте строки:

RewriteEngine On
RewriteRule ^$ https://domain.ru [R=301,L]

Вместо domain.ru укажите доменное имя вашего сайта.

.htaccess-редирект с GET-параметрами

Перейдите в директорию сайта. Откройте .htaccess и добавьте строки:

RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ http://domain.ru/ [R=301,L]

Вместо domain.ru укажите доменное имя вашего сайта.

.htaccess-редирект с массовой склейкой

Перейдите в директорию сайта и откройте .htaccess. Чтобы настроить перенаправление всех страниц на основной домен, добавьте строки:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^(.*)index\.(php|html|htm)$ http://domain.ru/$1 [R=301,L]

Вместо domain.ru укажите доменное имя вашего сайта.

Редирект с одной страницы на другую

Переадресация позволяет направлять посетителя на файл new.html когда он запрашивает файл old.html. Чтобы увидеть этот пример на практике, достаточно добавить следующую строку в файл .htaccess, расположенный в папке сайта. Строка должна быть введена как одна строка без переносов:

Redirect /directoryname/old.html http://yourdomainname/directoryname/new.html