当前位置: 首页 > 科技观察

Apache中将HTTP重定向至HTTPS

时间:2023-03-11 22:27:28 科技观察

在Apache中将HTTP重定向到HTTPS这是一个开源的跨平台HTTP服务器,为Internet上的大部分网站提供支持。Apache提供了许多强大的功能,可以通过额外的模块进行扩展。如果您是网站所有者或系统管理员,您很可能经常使用Apache。您可以执行的最常见任务之一是将HTTP流量重定向到网站的安全(HTTPS)版本。与以明文形式发送和返回请求和响应的HTTP不同,HTTPS使用TLS/SSL来加密客户端和服务器之间的通信。使用HTTPS而不是HTTP有很多优点,例如:所有数据都在双向加密。因此,敏感信息即使被拦截也无法读取。GoogleChrome和所有其他流行的浏览器会将您的网站标记为安全。HTTPS允许您使用HTTP/2协议,这大大提高了网站性能。Google更喜欢HTTPS站点。如果您的网站内容通过HTTPS提供,您的网站排名会更高。本文介绍如何在Apache中将HTTP流量重定向到HTTPS。在Apache中,有几种重定向到HTTPS的方法。如果您对运行Apache的Linux服务器具有root访问权限,则首选方法是在域名的虚拟主机配置文件中设置重定向。否则,可以在域名的.htaccess文件中设置重定向。某些控制面板(例如cPanel)让您只需点击几下鼠标即可强制执行HTTPS重定向。使用虚拟主机将HTTP重定向到HTTPSApache虚拟主机为服务器上托管的一个或多个域名定义设置。在虚拟主机指令中,您可以指定网站文档根目录(包含网站文件的目录)、为每个网站创建单独的安全策略、使用不同的SSL证书、配置重定向等。在域名上安装SSL证书时,该域名通常有两个虚拟主机指令。第一个用于端口80上的HTTP版本网站,另一个用于端口443上的HTTPS版本。在基于RedHat的发行版(例如CentOS和Fedora)上,虚拟主机文件存储在/etc/httpd/conf.d中。在Debian及其衍生产品(例如Ubuntu)上,文件存储在/etc/apache2/sites-available目录中。要将网站重定向到HTTPS,请使用Redirect指令,如以下示例所示:ServerNameexample.comServerAliaswww.example.comRedirectpermanent/https://example.com/ServerNameexample.comServerAliaswww.example.comProtocolsh2http://1.1#SSLConfiguration#OtherApacheConfiguration不妨解释一下代码。我们使用两个虚拟主机指令,一个用于网站的HTTP版本,一个用于HTTPS版本。VirtualHost*:80—Apache服务器在端口80(HTTP)上侦听来自指定域名的入站连接。VirtualHost*:443—Apache服务器在端口443(HTTPS)上侦听来自指定域名的入站连接。ServerName和ServerAlias指令指定了虚拟主机的域名。确保将其替换为您的域名。HTTP虚拟主机中突出显示的行:Redirectpermanent/https://example.com/将流量重定向到网站的HTTPS版本。通常,您还希望将网站的HTTPSwww版本重定向到非www版本,反之亦然。这是一个示例配置:ServerNameexample.comServerAliaswww.example.comRedirectpermanent/https://example.com/ServerNameexample.comServerAliaswww.example.comProtocolsh2http://1.1Redirectpermanent/https://example.com/#SSLConfiguration#OtherApacheConfigurationHTTPS虚拟主机代码(高亮行)检查是否请求标头包含www域名并重定向到非www版本。每当更改配置文件时,都需要重新启动或重新加载Apache服务才能使更改生效:Debian和Ubuntu:sudosystemctlreloadapache2CentOS和Fedora:sudosystemctlreloadhttpd使用.htaccess将HTTP重定向到HTTPS。htaccess是Apache的基于目录的配置Web服务器文档。此文件可用于定义Apache如何从文件所在的目录提供文件以及启用/禁用其他功能。.htaccess文件通常位于域根目录中,但您可以将其他.htaccess文件放在子目录中。此方法需要在Apache服务器上加载mod_rewrite模块。大多数服务器默认加载此模块。如果可能,最好在虚拟主机中创建重定向,因为这样更容易也更安全。要将所有HTTP流量重定向到HTTPS,请打开根.htaccess文件并向其中添加以下代码:RewriteEngineOnRewriteCond%{HTTPS}offRewriteRule^(.*)$https://example.com/$1[L,R=301]代码含义如下:RewriteEngineOn——开启重写功能。RewriteCond%{HTTPS}off-检查HTTP连接,如果满足条件,则执行下一行。RewriteRule^(.*)$https://example.com/$1[L,R=301]—将HTTP重定向到HTTPS,状态代码为301(永久移动)。确保更改域名。下面的示例有一个附加条件,用于检查请求是否以www开头。使用它来强制所有访问者使用站点的HTTPS非www版本:RewriteCond%{HTTPS}off[OR]RewriteCond%{HTTP_HOST}^www\.example\.com[NC]RewriteRule^(.*)$https://example.com/$1[L,R=301]编辑.htaccess文件时,您不需要重新启动服务器,因为Apache会在每次请求时读取该文件。结论在Apache中,HTTP重定向到HTTPS的首选方法是在域名的虚拟主机中配置301重定向。原标题:在Apache中将HTTP重定向到HTTPS