После подключения SSL-сертификата для сайта важно обеспечить, чтобы все обращения к сайту по незащищённому протоколу HTTP перенаправлялись на HTTPS. Это не только повышает безопасность, но и положительно влияет на SEO и доверие пользователей. Настроить 301 редирект можно через файл .htaccess
(если используется Apache), либо средствами веб-сервера nginx. Ниже описаны различные способы реализации этой задачи.
301 редирект с HTTP на HTTPS с помощью .htaccess
Полный редирект всех страниц
Вариант 1
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Вариант 2
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Вариант 3 (с учётом проксирования)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Редирект только конкретной страницы
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/payments.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Альтернативный вариант:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/payments.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Редирект всех страниц, кроме одной
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/test-page.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
301 редирект с HTTP на HTTPS средствами nginx
Редирект всего сайта
Если для одного домена в конфигурации nginx определены два server
-блока (один для HTTP, второй для HTTPS), правило добавляется в HTTP-блок:
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
Если используется один server
-блок, применяют условие:
if ($ssl_protocol = "") {
rewrite ^ https://$server_name$request_uri? permanent;
}
Редирект только конкретной страницы
location = /payments.php {
rewrite ^(.*)$ https://$http_host$request_uri redirect;
}
Редирект всех страниц, кроме одной
location = /test-page.php {
# Без редиректа — оставляем как есть
}
location / {
rewrite ^(.*)$ https://$http_host$request_uri redirect;
}
Дополнительные рекомендации
Убедитесь, что файл
.htaccess
активен и Apache поддерживает модульmod_rewrite
.Изменения в
.htaccess
вступают в силу сразу. Ошибки в синтаксисе могут вызвать ошибку 500. Всегда сохраняйте резервную копию оригинального файла.После изменения конфигурации nginx обязательно выполните проверку:
nginx -t
Затем перезагрузите конфигурацию:
service nginx reload
Или перезапустите сервер:
service nginx restart
Советы по безопасности и SEO
301 редирект является постоянным перенаправлением, передающим "вес" страницы (PageRank). Используйте его, если полностью переходите на HTTPS.
Проверьте наличие смешанного контента (mixed content), чтобы избежать ошибок в браузерах.
Используйте HSTS (HTTP Strict Transport Security) для дополнительной защиты пользователей:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Заключение
Настройка редиректа с HTTP на HTTPS — важный шаг в обеспечении безопасности и корректного отображения сайта в браузерах. Выбор метода зависит от используемого веб-сервера. Apache-ориентированные сайты могут использовать .htaccess
, а nginx требует редактирования конфигурационных файлов. Правильно реализованный редирект не только защищает данные пользователей, но и улучшает позиции сайта в поисковых системах.