Редирект можно настроить разными способами: в панели управления хостингом, через код HTML, через PHP, с помощью web.config, через .htaccess, а также другими способами. Рассмотрим, в чём особенность редиректа через .htaccess и как настроить 301-й .htaccess-редирект с одной страницы на другую, а также Bitrix redirect.
Если вы ещё не знаете, зачем нужно перенаправление страниц сайта, читайте нашу статью Что такое редирект.
В каких случаях подойдет .htaccess-редирект
Чтобы понять, для каких целей лучше подходит .htaccess-редирект, разберёмся, что такое .htaccess.
.htaccess — этот системный файл, который принадлежит корневой структуре сайта. В отличие от главного конфигурационного файла, который позволяет выполнять настройку веб-сервера в целом, .htaccess даёт возможность изменять настройки для отдельно взятых папок и пользователей.
Файл .htaccess позволяет вариативно настроить сайт. Действие команд из .htaccess распространяется на папки и подкаталоги, расположенные в одной директории с этим файлом. Если для какой-либо вложенной директории нужны иные инструкции, в ней также можно создать .htaccess. Если .htaccess расположен в корневой директории сервера, его действие распространяется на весь сервер, кроме тех директорий, где находится другой файл .htaccess.
Таким образом, через .htaccess можно сделать перенаправление точечно, а не сразу для всего ресурса. Этот вариант отлично подойдет в том случае, если вам нужно настроить переадресацию только для одной или нескольких страниц сайта.
Для чего нужен 301-й редирект
Помимо разных способов настройки переадресации, существуют разные виды редиректов. Каждый из них имеет своё кодовое название. Основные виды:
- 300 — сообщает, что по искомому запросу можно перейти не на одну, а на несколько альтернативных страниц;
- 301 — постоянный;
- 302 — временный;
- 303 — на схожую по тематике страницу;
- 305 — отсылающий к подключению через прокси-сервер.
Также существуют 304-й, 306-й и 307-й редиректы. Однако сейчас эти виды практически никто не использует. Один из самых популярных видов — это 301-й.
301-й редирект (Moved Permanently) — это постоянный редирект. Используется для перемещения страницы на новый URL-адрес насовсем. Когда поисковые системы встречают страницу с редиректом 301, они «понимают», что теперь необходимо индексировать новую страницу, а старую можно полностью исключить из индексации. Если настроить переадресацию 301 некорректно, на странице будет отображаться ошибка 404. Индексация страниц с ошибками приводит к снижению SEO-показателей всего веб-ресурса.
Как сделать редирект через .htaccess
Чтобы сделать перенаправление 301 через .htaccess, перейдите в каталог сайта и откройте .htaccess. Если файла ещё не существует, создайте его. После этого добавьте в файл строки кода из подходящей инструкции ниже.
Обратите внимание
Кириллические домены (в зоне .РФ .РУС и др.) необходимо прописывать в коде в формате Punycode: Как перевести домен в Punycode.
301 редирект Битрикс
1С-Битрикс — популярная CMS в которой время от времени необходимо настраивать перенаправление.
- Если вы хотите переадресовать домен с WWW на без WWW, укажите:
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
</IfModule>
Где www.site.ru — домен, с которого происходит редирект, а site.ru — домен, на который происходит редирект.
- Если вам нужно сделать редирект Bitrix с домена без WWW на WWW, введите комбинацию:
RewriteCond %{ENV:HTTPS} on
RewriteRule .* - [E=SSL:s]
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
Где www. — домен, с которого происходит редирект, а www. — домен, на который происходит редирект.
- Если вы хотите настроить в Битрикс редирект на другую страницу с http:// на https://, пропишите:
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
301 редирект с одного домена на другой
В файл .htaccess, который находится в папке сайта, с которого необходимо сделать переадресацию, добавьте следующие строки:
RewriteEngine On
RewriteCond %{HTTP_HOST} old-site.ru
RewriteRule (.*) http://new-site.ru/$1 [R=301,L]
Где:
- old-site.ru — домен, с которого происходит редирект;
- new-site.ru — домен, на который происходит редирект.
301 редирект с одной страницы на другую
Добавьте в .htaccess следующие строки:
RewriteEngine On
RewriteCond %{HTTP_HOST} site.ru/old-page
RewriteRule (.*) http://site.ru/new-page$1 [R=301,L]
Где:
- site.ru/old-page — адрес прежней страницы,
- site.ru/new-page — адрес новой страницы.
301 редирект с домена с WWW на домен без WWW
Добавьте в .htaccess следующие строки:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Где site.ru — имя вашего домена.
301 редирект с домена без WWW на домен с WWW
Добавьте в .htaccess следующие строки:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
Где site.ru — имя вашего домена.
301 редирект для отдельного IP
Добавьте в .htaccess следующие строки:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} 123.123.123.123
RewriteRule ^(.*)$ http://site.ru [R=301,L]
Где site.ru — имя вашего домена.
301 редирект с https:// на http://
Добавьте в .htaccess следующие строки:
RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Где site.ru — имя вашего домена.
301 редирект с http:// на https:// для Linux
Добавьте в .htaccess код из нужного вам примера ниже:
- Для всех страниц с http:// на https://
Для всех страниц с http:// на https://, в том числе и с http://www на https://
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Если первый вариант не поможет, воспользуйтесь вторым вариантом:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Если все варианты не помогли и возникает циклическая переадресация:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- Перенаправление на https только выбранной страницы
В примерах ниже переадресация настраивается для страницы login.php:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Или:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
- Перенаправление на https всех страниц, кроме одной
В примере ниже редирект настраивается для страницы test.php.
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/test.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
301 редирект с главной страницы, кроме остальных страниц сайта
В файл .htaccess, который находится в папке сайта, с которого необходимо сделать переадресацию, добавьте следующие строки:
RewriteEngine On
RewriteRule ^$ https://site.ru [R=301,L]
301 редирект со всех страниц сайта, кроме главной
В файл .htaccess, который находится в папке сайта, с которого необходимо сделать переадресацию, добавьте следующие строки:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*)$ http://site.ru/ [L,R=301]
301 редирект с GET-параметрами
Если вам необходимо сделать .htaccess редирект с get параметрами, укажите:
RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ http://site.ru/ [R=301,L]
Где site.ru — имя вашего домена.
301 редирект с массовой склейкой
Если вам необходимо сделать .htaccess редирект на index php, введите:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^(.*)index\.(php|html|htm)$ http://site.ru/$1 [R=301,L]
Где site.ru — имя вашего домена.
Внимание
Если вы выполнили все шаги инструкции, но не получили желаемого результата, это может быть связано с локальными настройками. Напишите заявку в службу поддержки, наши специалисты оперативно вам помогут.
Теперь вы знаете, как сделать редирект со страницы на страницу через htaccess и сможете настроить его по нашей инструкции.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊