如何使用.htaccess强制HTTPS

如果为您的域安装了SSL证书,则下一步应该是配置应用程序以通过HTTPS提供所有网络流量。

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

通过HTTP使用HTTPS有几个优点,例如:

  • 所有数据都是双向加密的。 结果,如果拦截了敏感信息,则无法读取。
  • Chrome,Firefox和所有其他流行的浏览器都会将您的网站标记为安全。
  • HTTPS允许您使用HTTP / 2协议,这可以大大提高站点性能。
  • Google偏爱HTTPS网站。 如果通过HTTPS提供服务,您的网站将排名更高。

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

如果您对运行Apache的Linux服务器具有SSH根访问权限,则首选方法是在域的虚拟主机配置文件中设置重定向。 否则,您可以在域的 .htaccess 文件。 Apache服务器读取 .htaccess 每个页面请求上的文件,这会降低网络服务器的速度。

大多数控制面板(例如cPanel)都允许您使用图形用户界面强制HTTPS重定向。

使用以下命令将HTTP重定向到HTTPS .htaccess

.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://example.com/abouthttp://example.com/about 要么 http://www.example.com/abouthttps://www.example.com/about

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

而已! 添加这些行之后,保存文件并刷新浏览器。 所有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。

将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。

如果您有任何疑问或反馈,请随时发表评论。

阿帕奇

Sidebar