帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 如何使用.htaccess强制HTTPS?

如何使用.htaccess强制HTTPS?

发布时间:2020年07月04日 09:29:39    来源: A5互联

如果你为你的域名安装了SSL证书,你的下一步应该是将应用程序配置为通过HTTPS来服务所有的Web流量。

与HTTP不同的是,HTTPS使用TLS/SSL来加密客户端和服务器之间的通信,HTTPS的请求和响应都是以纯文本形式发送和返回的。

与HTTP相比,使用HTTPS有几个优点,比如:

所有的数据都是双向加密的。因此,如果被拦截,敏感信息无法读取。

Chrome、Firefox和其他所有流行的浏览器都会将您的网站标记为安全。

HTTPS允许您使用HTTP/2协议,这大大提高了网站的性能。

各搜索引擎也更亲腻于HTTPS网站。如果通过HTTPS服务,您的网站或许能获得更好的排名。

重定向可以在应用程序或服务器级别设置。本文介绍了如何使用.htaccess文件将HTTP流量重定向到HTTPS。

如果你有SSH根权限访问Apache运行的Linux服务器,首选的方法是在域的虚拟主机配置文件中设置重定向。否则,你可以在域名的.htaccess文件中配置重定向。Apache服务器在每次页面请求时都会读取.htaccess文件,这样会使Web服务器的速度变慢。

大多数控制面板,比如宝塔上都有图形用户界面强制HTTPS重定向。

1、在 .htaccess中使用以下命令将HTTP重定向到HTTPS

.htaccess是Apache Web服务器按目录的配置文件。该文件用于定义Apache如何从其放置目录中提供文件以及启用/禁用其他功能。

通常,该.htaccess文件位于域根目录中,但是您可以.htaccess在子目录中包含其他文件。

您可以.htaccess通过SSH或FTP编辑文件(或创建一个新文件)。

要将HTTP请求重定向到HTTPS,请打开.htaccess文件,并添加以下代码:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

其中每一行代码的作用:

RewriteEngine On -启用重写功能,并允许我们使用重写规则。

RewriteCond %{HTTPS} off-检查连接是否为HTTP请求类型。当条件满足时,执行下一行。我们只想重定向HTTP请求。如果您忽略此条件,则会出现重定向循环。

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]-使用状态代码301(永久移动)将所有HTTP请求重定向到HTTPS。

如果文件中还有其他规则,请重写代码添加到顶部。

添加这些行之后,保存文件并刷新浏览器。所有HTTP请求都应重定向到HTTPS。

编辑.htaccess文件时,无需重新启动服务器,因为Apache会在每个请求中读取文件。

下面是另一个从HTTP重定向到HTTPS的通用规则:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

HTTP_HOST是访问者在访问站点时请求的主机名。此变量代表您的域名。

REQUEST_URI 是用于访问页面的URI。

2、将HTTP重定向为HTTPS,将WWW重定向为非WWW

可以使用两个URL访问任何网站:带www前缀(例如www.example.com)和不带www(例如example.com)的URL 。大多数网站所有者都选择一个版本作为首选域并重定向到该域。

要从HTTP重定向到HTTPS,从www重定向到网站的非www版本,请在.htaccess文件中添加以下几行:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]

RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

这里我们有两个条件。第一个检查连接是否不是HTTPS,第二个检查请求是否以开头www。如果条件之一为真([OR]运算符),则执行重写规则。

将HTTP重定向到HTTPS,将非WWW重定向到WWW

如果您更喜欢网站的www版本,请使用以下规则从HTTP重定向到HTTPS,从非www重定向到www

RewriteEngine On

RewriteCond %{HTTPS} off [OR]

RewriteCond %{HTTP_HOST} ^example\.com [NC]

RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

结论

我们已经向您展示了如何编辑.htaccess文件以将所有HTTP通信重定向到HTTPS。

如果可以访问Apache配置文件,则为获得更好的性能,应通过在域名虚拟主机中创建301重定向来强制执行HTTPS。