Редирект можно настроить разными способами: в панели управления хостингом, через код HTML, через PHP, с помощью web.config, через .htaccess, а также другими способами. Рассмотрим, в чём особенность редиректа через .htaccess и как настроить 301-й .htaccess-редирект с одной страницы на другую, а также Bitrix redirect.
Чтобы понять, для каких целей лучше подходит .htaccess-редирект, разберёмся, что такое .htaccess.
.htaccess — этот системный файл, который принадлежит корневой структуре сайта. В отличие от главного конфигурационного файла, который позволяет выполнять настройку веб-сервера в целом, .htaccess даёт возможность изменять настройки для отдельно взятых папок и пользователей.
Файл .htaccess позволяет вариативно настроить сайт. Действие команд из .htaccess распространяется на папки и подкаталоги, расположенные в одной директории с этим файлом. Если для какой-либо вложенной директории нужны иные инструкции, в ней также можно создать .htaccess. Если .htaccess расположен в корневой директории сервера, его действие распространяется на весь сервер, кроме тех директорий, где находится другой файл .htaccess.
Таким образом, через .htaccess можно сделать перенаправление точечно, а не сразу для всего ресурса.
Помимо разных способов настройки переадресации, существуют разные виды редиректов. Каждый из них имеет своё кодовое название. Основные виды:
Также существуют 304-й, 306-й и 307-й редиректы. Однако сейчас эти виды практически никто не использует. Одни из самых популярных видов — это 301-й и 302-й.
301-й редирект (Moved Permanently) — это постоянный редирект. Используется для перемещения страницы на новый URL-адрес насовсем. Когда поисковые системы встречают страницу с редиректом 301, они «понимают», что теперь необходимо индексировать новую страницу, а старую можно полностью исключить из индексации. Если настроить переадресацию 301 некорректно, на странице будет отображаться ошибка 404. Индексация страниц с ошибками приводит к снижению SEO-показателей всего веб-ресурса
Чтобы сделать перенаправление 301 через .htaccess, перейдите в каталог сайта и откройте .htaccess. Если файла ещё насуществует, создайте его. После этого добавьте в файл строки кода из подходящей инструкции ниже.
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>
Если вам нужно сделать редирект 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]
Добавьте в .htaccess следующие строки:
RewriteEngine On RewriteCond %{REMOTE_ADDR} 123.123.123.123 RewriteRule ^(.*)$ http://site.ru [R=301,L]
site.ru — имя вашего домена.
В файл .htaccess, который находится в папке сайта, с которого необходимо сделать переадресацию, добавьте следующие строки:
RewriteEngine On RewriteCond %{HTTP_HOST} old-site.ru RewriteRule (.*) http://new-site.ru/$1 [R=301,L]
Добавьте в .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]
Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из