Переадресация (редирект) с HTTP на HTTPS версию сайта
Материал из 1GbWiki.
Версия 08:45, 6 февраля 2018 (править) Renton (Обсуждение | вклад) (Новая: == Веб-сервер IIS === == Веб-сервер Apache === == Другие технологии ===) ← К предыдущему изменению |
Текущая версия (11:38, 6 февраля 2018) (править) (отменить) Renton (Обсуждение | вклад) |
||
(11 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | + | Все современные 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="(.*)" /> | ||
+ | <nowiki><action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /></nowiki> | ||
+ | </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="(.*)" /> | ||
+ | <nowiki><action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" /></nowiki> | ||
+ | </rule> | ||
+ | </rules> | ||
+ | </rewrite> | ||
+ | |||
+ | == Веб-сервер Apache == | ||
+ | === Бесплатные сертификаты Let's Encrypt === | ||
+ | Для управления режимами работы сайта по HTTPS, используйте раздел личного кабинета [https://www.1gb.ru/c/sni Полный список функций -> Параметры работы бесплатного SSL / HTTPS на общем 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 | ||
+ | RewriteCond %{HTTP:X-Forwarded-Proto} !=https | ||
+ | <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
- рекомендуемый к использованию
Анализируя их в своем приложении, вы можете самостоятельно задавать логику работы сайта, определяя необходимость редиректов.
[править] Ссылки
- Поддержка SSL / HTTPS, бесплатно для всех сайтов! - Статья об использовании бесплатных сертификатов Let's Encrypt на хостинге 1Gb.ru.
- Поддержка SSL / HTTPS, выделенный IP, бесплатный SSL сертификат - Использование платных сертификатов на хостинге 1Gb.ru.