Как мне просто заставить весь сайт использовать безопасное соединение? [закрыто]


18

В Drupal 7 я использовал модуль безопасного входа для запуска сайта по безопасному соединению, но, похоже, он не возвращается к http при выходе из системы. Я хотел бы просто запустить весь сайт как https: // для упрощения.

Есть ли простой способ сделать это без использования модуля?


Сегодня я только что установил модуль Htaccess , изменил существующие настройки и развернул этот профиль. Кажется, работает отлично ...
Алексей Зубенко

Ответы:



35

Если вы хотите перенаправить все свои страницы, чтобы принудительно использовать SSL, добавьте это в свой .htaccessфайл.

# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Это должно быть размещено сразу после, RewriteEngine on если у вас нет предыдущих переписываний.


1

Еще один удобный трюк, если у вас есть root-доступ к Apache для изменения ваших директив vhost, это добавить это в директиву SSL для сайта. Большинство современных браузеров подчиняются этой директиве (IE9 нет)

Header always set Strict-Transport-Security "max-age=63072000"

Вы можете установить возраст на все, что вы хотите. Это означает, что веб-браузеры, которые подчиняются этому, используют ТОЛЬКО протокол SSL для связи с вашим сайтом, а не простой HTTP. Это добавляет немного уверенности во всей ситуации переключения HTTP / HTTPS.

Это удобный хак.

ПРИМЕЧАНИЕ. Это будет работать только в том случае, если на вашем сайте есть действительный SSL-сертификат (не самоподписанный, с истекшим сроком действия или иным образом неверный). Если вы этого не сделаете, браузер не сможет подключиться к нему, пока не истечет максимальный срок.


0

Есть еще один вариант, который вы можете попробовать - это то, что мне нужно для одной из моих установок, и для него не требуются дополнительные модули:

Во-первых, в вашем .htaccess:

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^www\.yourdomainhere\.com*
RewriteRule ^(.*)$ https://www.yourdomainhere.com/ [L,R=301]

Это должно быть добавлено после:

RewriteEngine on

Затем в вашем файле settings.php:

$base_url = 'https://www.yourdomainhere.com'; 

Кроме того, вы можете проверить наличие внешних ресурсов, таких как веб-шрифты и другие ссылки, которые должны поступать из домена https, чтобы избежать предупреждений сертификатов.

Надеюсь это поможет.


-2

Есть и другое решение, которое заключается в простом добавлении $ _SERVER ['HTTPS'] = 'On'; в файле settings.php

Подробнее на https://www.drupal.org/https-information#comment-9901783

Однако, похоже, что метод htaccess перенаправляет независимо, тогда как файл settings.php требует очистки кэша браузера.


2
Не кажется, чтобы сделать трюк сам по себе. Пришлось очистить кеши друпалов, но, несмотря на то, что страницы друпалов служили https, такие ресурсы, как изображения, не были. Они были загружены, но браузер предупреждал об этом (в консоли), и на значке замка было предупреждение. Мне пришлось добавить директиву htaccess из ответа Рика, чтобы получить правильный значок блокировки.
обычная щука
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.