如何简单地使整个站点使用安全连接?[关闭]


18

在Drupal 7中,我使用了安全登录模块在安全连接上运行该站点,但似乎在注销时不会恢复为http。为了简化起见,我想将整个站点都以https://的形式运行。

有没有使用模块的简单方法?


今天,我刚刚安装了Htaccess模块,更改了其现有设置并部署了此配置文件。似乎可以完美工作……
Aleksey Zubenko

Answers:



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

如果您具有对Apache的root访问权限以更改vhost指令,则另一个方便的技巧是将其添加到站点的SSL指令中。大多数现代浏览器都遵守此指令(IE9则不这样做)

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

您可以将年龄设置为任何所需的值。这样做是为了告知Web浏览器,服从此命令仅使用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'; 

另外,您可能需要检查外部资源,例如Web字体和其他引用,这些资源需要来自https域,以避免证书警告。

希望这可以帮助。


-2

还有另一种解决方案,就是简单地添加$ _SERVER ['HTTPS'] ='On'; 在settings.php文件中

详情请参阅https://www.drupal.org/https-information#comment-9901783

但是,似乎htaccess方法都会进行重定向,而settings.php文件需要清除浏览器缓存。


2
自己似乎并没有做到这一点。不得不清除drupal缓存,但是,尽管drupal页面用作https,但是图像之类的资源却没有。它们已加载,但是浏览器正在(在控制台中)对其进行警告,并且锁定图标具有警告。我必须从Ricks answer中添加htaccess指令才能获得正确的锁定图标。
commonpike
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.