Как сделать 301 редирект через .htaccess

Редирект — это процесс перенаправления пользователя с запрашиваемого URL-адреса на другой. Он используется, когда документ был временно или постоянно перемещен на другой URL-адрес. Редирект может быть эффективным инструментом улучшения юзабилити и SEO.

Для чего нужен 301-й редирект

301-й редирект (Moved Permanently) — это постоянный редирект. Используется для перемещения страницы на новый URL-адрес насовсем. Когда поисковые системы встречают страницу с редиректом 301, они «понимают», что теперь необходимо индексировать новую страницу, а старую можно полностью исключить из индексации.

Помимо разных способов настройки переадресации, существуют разные виды редиректов. Каждый из них имеет своё кодовое название. Основные виды:

  • 300 — сообщает, что по искомому запросу можно перейти не на одну, а на несколько альтернативных страниц;
  • 301 — постоянный;
  • 302 — временный;
  • 303 — на схожую по тематике страницу;
  • 305 — отсылающий к подключению через прокси-сервер.

Полный список кодов ответа сервера доступен тут

Файл .htaccess

.htaccess — это конфигурационный файл веб-сервера Apache, позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера.

Синтаксис .htaccess

Синтаксис файла простой: каждая директива (команда) начинается с новой строки, после знака # можно добавлять комментарии, которые не будут учитываться сервером. Изменения на сайте вступают в силу сразу, перезагрузка сервера не требуется.

Основные спецсимволы:

  • ^ — начало строки;
  • $ — конец строки;
  • . — любой символ;
  • ⚹ — любое количество любых символов;
  • ? — один определенный символ;
  • [0-9] — последовательность символов, например, от 0 до 9;
  • | — символ «или», выбирается или одна группа, или другая;
  • () — иcпользуется для выбора групп символов

Основные переменные:

  • %{HTTP_USER_AGENT} — поле User-Agent, которое передает браузер пользователя;
  • %{REMOTE_ADDR} — IP адрес пользователя;
  • %{REQUEST_URI} — запрашиваемый URI;
  • %{QUERY_STRING} — параметры запроса после знака ?.

Примеры настройки редиректов

Для редактирования файла .htaccess и других конфигурационных файлов не рекомендуется использовать «Блокнот» Windows, лучше использовать специальные текстовые редакторы, например Notepad++.

ВНИМАНИЕ! Перед настройкой редиректов убедитесь, что в файле .htaccess присутствует команда: RewriteEngine On

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

Redirect 301 /page-1/ http://site-example.ru/page-2/

301 редирект с домена без WWW на домен с WWW (главное зеркало – домен с www)

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

301 редирект с домена с WWW на домен без WWW (главное зеркало – домен без www)

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

301 редирект с протокола http на https

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

301 редирект с протокола https на http

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

301 редирект с сохранением GET-параметров запроса

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

301 редирект для всех страниц одного домена на главную страницу другого домена

RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site-example.ru/ [L,R=301]