网站搜索

如何在 Apache 上将 HTTP 重定向到 HTTPS


HTTP超文本传输协议)是万维网WWW)上数据通信的流行且基本的协议);通常在网络浏览器和存储网络文件的服务器之间。而HTTPS是HTTP的安全版本,其中末尾的“S”代表“安全”。

使用HTTPS,您的浏览器和网络服务器之间的所有数据都经过加密,因此非常安全。本教程将向您展示如何在 Linux 中的 Apache HTTP 服务器上将 HTTP 重定向到 HTTPS

在为您的域设置 Apache HTTPHTTPS 重定向之前,请确保您已安装 SSL 证书mod_rewrite 在 Apache 中启用了。有关如何在 Apache 上设置 SSL 的更多信息,请参阅以下指南。

  1. 如何为 Apache 创建自签名 SSL 证书和密钥
  2. 如何在 CentOS/RHEL 7 上安装 Let’s Encrypt SSL 证书
  3. 如何在 Debian/Ubuntu 上安装 Let’s Encrypt SSL 证书

使用 .htaccess 文件在 Apache 上将 HTTP 重定向到 HTTPS

对于此方法,请确保启用 mod_rewrite,否则在 Ubuntu/Debian 系统上启用它。

sudo a2enmod rewrite	[Ubuntu/Debian]

对于 CentOS/RHEL 用户,请确保您的 httpd.conf 中有以下行(mod_rewrite 支持 - 默认启用)。

LoadModule rewrite_module modules/mod_rewrite.so

现在您只需在域根目录中编辑或创建 .htaccess 文件并添加这些行即可将 http 重定向到 https。

RewriteEngine On 
RewriteCond %{HTTPS}  !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

现在,当访问者输入 http://www.yourdomain.com 时,服务器会自动将 HTTP 重定向到 HTTPS https://www.yourdomain.com

在 Apache 虚拟主机上将 HTTP 重定向到 HTTPS

此外,要强制所有网络流量使用 HTTPS,您还可以配置虚拟主机文件。通常,如果启用 SSL 证书,虚拟主机配置有两个重要部分:第一个包含非安全端口 80 的配置。

第二个用于安全端口 443。要将网站的所有页面的 HTTP 重定向到 HTTPS,请首先打开相应的虚拟主机文件。然后修改它,添加以下配置。

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName www.yourdomain.com
   Redirect / https://www.yourdomain.com
</VirtualHost>

<VirtualHost _default_:443>
   ServerName www.yourdomain.com
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On
etc...
</VirtualHost>

保存并关闭文件,然后像这样重新启动 HTTP 服务器。

sudo systemctl restart apache2     [Ubuntu/Debian]
sudo systemctl restart httpd	     [RHEL/CentOS]

是最推荐的解决方案,因为它更简单、更安全。

您可能想阅读这些有用的 Apache HTTP 服务器安全强化文章:

  1. 保护和自定义网站的 25 个有用的 Apache ‘.htaccess’ 技巧
  2. 如何使用 .htaccess 文件对 Apache 中的 Web 目录进行密码保护
  3. 如何隐藏 Apache 版本号和其他敏感信息
  4. 使用 Mod_Security 和 Mod_evasive 保护 Apache 免受暴力或 DDoS 攻击

就这样!要分享有关本指南的任何想法,请使用下面的反馈表。请记住始终与 Howtoing.com 保持连接。