如何在 Apache 上将 HTTP 重定向到 HTTPS
HTTP(超文本传输协议)是万维网(WWW)上数据通信的流行且基本的协议);通常在网络浏览器和存储网络文件的服务器之间。而HTTPS是HTTP的安全版本,其中末尾的“S”代表“安全”。
使用HTTPS,您的浏览器和网络服务器之间的所有数据都经过加密,因此非常安全。本教程将向您展示如何在 Linux 中的 Apache HTTP 服务器上将 HTTP 重定向到 HTTPS。
在为您的域设置 Apache HTTP 到 HTTPS 重定向之前,请确保您已安装 SSL 证书 和 mod_rewrite 在 Apache 中启用了。有关如何在 Apache 上设置 SSL 的更多信息,请参阅以下指南。
- 如何为 Apache 创建自签名 SSL 证书和密钥
- 如何在 CentOS/RHEL 7 上安装 Let’s Encrypt SSL 证书
- 如何在 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 服务器安全强化文章:
- 保护和自定义网站的 25 个有用的 Apache ‘.htaccess’ 技巧
- 如何使用 .htaccess 文件对 Apache 中的 Web 目录进行密码保护
- 如何隐藏 Apache 版本号和其他敏感信息
- 使用 Mod_Security 和 Mod_evasive 保护 Apache 免受暴力或 DDoS 攻击
就这样!要分享有关本指南的任何想法,请使用下面的反馈表。请记住始终与 Howtoing.com 保持连接。