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

本文介绍如何使用启用SSL证书的域中的Apache mod_rewrite模块将域从HTTP重定向到HTTPS版本。

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

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

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

  1. 如何为Apache创建自签名的SSL证书和密钥
  2. 如何安装我们在CentOS / RHEL上加密SSL证书7
  3. 如何安装我们在Debian / Ubuntu上加密SSL证书

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

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

$ sudo a2enmod rewrite	[Ubuntu/Debian]

对于CentOS / RHEL用户,请确保您在httpd.confmod_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

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

另外,要强制所有Web流量使用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]

虽然<VirtualHost>是最推荐的解决方案,因为它更简单和安全。

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

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

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