Переадресация (редирект) с HTTP на HTTPS версию сайта

Материал из 1GbWiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 10:48, 6 февраля 2018 (править)
Renton (Обсуждение | вклад)
(Платные сертификаты на выделенном IP)
← К предыдущему изменению
Текущая версия (11:38, 6 февраля 2018) (править) (отменить)
Renton (Обсуждение | вклад)

 
(7 промежуточных версий не показаны.)
Строка 1: Строка 1:
 +Все современные CMS умеют сами правильно определять доступность протокола HTTPS и переключать сайт на его работу. Поэтому, прежде чем вносить изменения в конфигурацию веб-сервера, посмотрите в настройках вашей CMS соответствующие разделы. Одновременное включение перенаправлений через настройки CMS и конфигурацию веб-сервера, может нарушить работу вашего сайта.
 +
== Веб-сервер IIS 7 (и выше) == == Веб-сервер IIS 7 (и выше) ==
Добавьте в файл Web.config в секцию '''<system.webServer>''' следующий код для безусловной переадресации на https версию сайта Добавьте в файл Web.config в секцию '''<system.webServer>''' следующий код для безусловной переадресации на https версию сайта
Строка 33: Строка 35:
=== Платные сертификаты на выделенном IP === === Платные сертификаты на выделенном IP ===
 +Добавьте в файл .htaccess следующий код для безусловной переадресации на https версию сайта
 + RewriteEngine On
 + RewriteCond %{HTTP:X-Forwarded-Proto} !=https
 + <nowiki>RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L]</nowiki>
 +Если необходим редирект с кодом 302, то используйте следующий код:
RewriteEngine On RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https RewriteCond %{HTTP:X-Forwarded-Proto} !=https
- <nowiki>RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]</nowiki>+ <nowiki>RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=302,L]</nowiki>
 + 
 +== Другие технологии ==
 +При работе сайта по HTTPS протоколу, веб-сервер формирует следующие HTTP заголовки и их значения:
 + '''X-Forwarded-Proto: https'''
 + X-Forwarded-Port: 443
 + HTTPS: on
 + 
 +<hr style="width: 100px">
 +<code>X-Forwarded-Proto</code> - рекомендуемый к использованию
 +<br /><br />
 +Анализируя их в своем приложении, вы можете самостоятельно задавать логику работы сайта, определяя необходимость редиректов.
 + 
 +== Ссылки ==
 +* [https://www.1gb.ru/services_ssl_everywhere.php Поддержка SSL / HTTPS, бесплатно для всех сайтов!] - Статья об использовании бесплатных сертификатов Let's Encrypt на хостинге [http://www.1gb.ru 1Gb.ru].
 +* [https://www.1gb.ru/services_ssl.php Поддержка SSL / HTTPS, выделенный IP, бесплатный SSL сертификат] - Использование платных сертификатов на хостинге [http://www.1gb.ru 1Gb.ru].
-== Другие технологии ===+[[Категория:Безопасность]]
 +[[Категория:Программирование]]
 +[[Категория:WEB-сервер IIS]]
 +[[Категория:WEB-сервер Apache]]

Текущая версия

Все современные CMS умеют сами правильно определять доступность протокола HTTPS и переключать сайт на его работу. Поэтому, прежде чем вносить изменения в конфигурацию веб-сервера, посмотрите в настройках вашей CMS соответствующие разделы. Одновременное включение перенаправлений через настройки CMS и конфигурацию веб-сервера, может нарушить работу вашего сайта.

Содержание

[править] Веб-сервер IIS 7 (и выше)

Добавьте в файл Web.config в секцию <system.webServer> следующий код для безусловной переадресации на https версию сайта

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <conditions>
        <add input="{HTTP_X_Forwarded_Proto}" negate="true" pattern="^https$" ignoreCase="true" />
      </conditions>
      <match url="(.*)" />
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
    </rule>
  </rules>
</rewrite>

Если необходим редирект с кодом 302, то используйте следующий код:

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <conditions>
        <add input="{HTTP_X_Forwarded_Proto}" negate="true" pattern="^https$" ignoreCase="true" />
      </conditions>
      <match url="(.*)" />
      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
    </rule>
  </rules>
</rewrite>

[править] Веб-сервер Apache

[править] Бесплатные сертификаты Let's Encrypt

Для управления режимами работы сайта по HTTPS, используйте раздел личного кабинета Полный список функций -> Параметры работы бесплатного SSL / HTTPS на общем IP

[править] Платные сертификаты на выделенном IP

Добавьте в файл .htaccess следующий код для безусловной переадресации на https версию сайта

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L]

Если необходим редирект с кодом 302, то используйте следующий код:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=302,L]

[править] Другие технологии

При работе сайта по HTTPS протоколу, веб-сервер формирует следующие HTTP заголовки и их значения:

X-Forwarded-Proto: https
X-Forwarded-Port: 443
HTTPS: on

X-Forwarded-Proto - рекомендуемый к использованию

Анализируя их в своем приложении, вы можете самостоятельно задавать логику работы сайта, определяя необходимость редиректов.

[править] Ссылки

Личные инструменты