配置 Apache 强制 HTTP 重定向到 HTTPS

Apache 是世界上最流行的 Web 服务器之一,它是一个开源和跨平台的网络服务器,为众多的网站提供支持。今天牛奇网为您介绍,如何配置 Apache 强制从 HTTP 重定向到 HTTPS。

配置 Apache 强制 HTTP 重定向到 HTTPS
配置 Apache 强制 HTTP 重定向到 HTTPS

与 HTTP 相比 HTTPS 有以下优点:

  • 传输数据是双向加密的,信息的安全性更高。
  • 一些主流浏览器会为网站添加安全标记。
  • HTTPS 允许使用 HTTP/2 协议,可以提升站点加载速度。
  • 搜索引擎更偏爱 HTTPS 网站。

在 Apache 服务器上有多种从HTTP重定向到 HTTPS 的方法。如果有 Linux 服务器的 root 权限,可以选择在对应域名的虚拟主机配置文件中设置重定向。当然,也可以在 .htaccess 文件中设置重定向。

配置虚拟主机将 HTTP 重定向到 HTTPS

通过配置 Apache 虚拟主机,可以在同一服务器上托管多个网站。在虚拟主机配置文件中,通过使用相应的配置指令,可以设置网站根目录(包含网站文件的目录)、为每个网站创建单独的安全策略、使用不同的 SSL 证书、配置重定向等等。

当在网站上安装 SSL 证书后,该网站将有两段配置指令,一个为站点的 HTTP 版本,端口为 80,另一个为 HTTPS 版本,端口为 443。

在 Debian 和 Ubuntu 服务器上,虚拟主机配置文件通常存储在 /etc/apache2/sites-available 目录中。

要将网站重定向到 HTTPS,可以使用下面示例中所示的 Redirect 指令:

<VirtualHost *:80> 
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http/1.1

  # SSL Configuration

  # Other Apache Configuration

</VirtualHost>

简单介绍一下上面的代码。我们使用了两段虚拟主机配置指令,一个用于 HTTP 版本,一个用于 HTTPS 版本。

  • VirtualHost *:80 – Apache 服务器在端口 80 (HTTP) 上侦听对应域名的传入连接。
  • VirtualHost *:443– Apache 服务器在端口 443 (HTTPS) 上侦听对应域名的传入连接。

在复制上面的代码时,记得要将虚拟主机中的 ServerNameServerAlias 替换为自己的域名。

如果想要将网站 HTTPS 的 www 网址重定向到不带 www 网址,可以进行如下配置:

<VirtualHost *:80> 
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.example.com'">
    Redirect permanent / https://example.com/
  </If>

  # SSL Configuration

  # Other Apache Configuration

</VirtualHost>

上图所示的 HTTPS 虚拟主机配置代码中,有一段是飘红显示的,作用是检查请求标头是否包含 www ,如果有将其重定向到不带 www 网址。

在对配置文件进行更改后,重新启动或重新加载 Apache 服务,以使更改生效:

Debian 和 Ubuntu:

sudo systemctl reload apache2

CentOS 和 Fedora:

sudo systemctl reload httpd

配置 .htaccess 从 HTTP 重定向到 HTTPS

.htaccess 文件的英文全称是 Hypertext Access ,可以翻译为”分布式配置文件”。提供目录级别的配置的方法,存放在特定目录中, 可作用于当前目录及其所有子目录。通常 .htaccess 文件位于网站根目录中,但也可以在子目录中进行配置。

通过 .htaccess 配置从 HTTP 重定向到 HTTPS,必须要在 Apache 的配置文件中,启用 mod_rewrite 模块。大多数服务器默认启用此模块。

配置 .htaccess 从 HTTP 重定向到 HTTPS,请打开网站根目录下的 .htaccess 文件,并在其中添加以下代码:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

以下是代码的含义:

  • RewriteEngine On:启用重写功能。
  • RewriteCond %{HTTPS} off:检查 HTTP 连接,如果满足条件,则执行下一行。
  • RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]:将 HTTP 通过 301 重定向到 HTTPS。

下面的示例代码中,还会检查请求网址是否包含 www, 如果包含会跳转到不带 www 的网址:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

编辑 .htaccess 文件后,不需要重新启动 Apache 服务器,系统会在每次请求时读取该文件。

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/redirect-http-to-https-in-apache/

(1)
牛奇网牛奇网
上一篇 2022年2月10日 下午5:41
下一篇 2022年2月10日 下午8:39

相关推荐

发表回复

登录后才能评论