可以在应用程序级别或Linux服务器级别上设置重定向,本文介绍如何使用.htaccess文件将HTTP通信重定向到HTTPS。如果您对运行Apache的Linux服务器具有SSH根访问权限,则首选方法是在域的主机配置文件中设置重定向,否则,您可以在域的.htaccess文件中配置重定向。 Apache服务器在每个页面请求上读取.htaccess文件,这会降低Web服务器的速度,同时大多数控制面板(例如cPanel)都允许您使用图形用户界面强制HTTPS重定向。
前言 如果安装了SSL证书,则下一步应该是配置应用程序以通过HTTPS提供所有网络流量,与HTTP(以纯文本形式发送和返回请求和响应)不同,HTTPS使用TLS/SSL加密客户端和服务器之间的通信。 通过HTTP使用HTTPS有几个优点,例如: 1、所有数据都是双向加密的,如果拦截了敏感信息,则无法读取。 2、Chrome、Firefox和所有其他流行的浏览器都会将您的网站标记为安全。 3、HTTPS允许您使用HTTP/2协议,这可以显着提高站点性能,参考Debian 10 Nginx服务器上安装和更新Let’s Encrypt SSL并启用HTTP/2一文。 4、Google偏爱HTTPS网站,如果通过HTTPS提供服务,则您的网站排名将会更高。
使用.htaccess将HTTP重定向到HTTPS的方法 .htaccess是Apache Web服务器基于目录的配置文件,该文件用于定义Apache如何从其放置目录中提供文件以及启用/禁用其他功能。 通常.htaccess文件位于域根目录中,但是您可以在子目录中拥有其他.htaccess文件。 您可以通过SSH或FTP编辑.htaccess文件(或创建一个新文件)。 要将HTTP请求重定向到HTTPS,请打开.htaccess文件,并添加以下代码,以下是从HTTP重定向到HTTPS的通用规则: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 这是每一行代码的作用: 1、RewriteEngine On-启用重写功能,并允许我们使用重写规则。 2、RewriteCond %{HTTPS} off-检查连接是否为HTTP请求类型,当条件满足时,执行下一行,我们只想重定向HTTP请求,如果您忽略此条件,则会出现重定向循环。 3、RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]-将所有HTTP请求重定向到HTTPS,状态码为301(永久移动),此规则会将http://example.com/about重定向为https://example.com/about或将http://www.example.com/about重定向为https://www.example.com/about。 4、HTTP_HOST是访问者在访问站点时请求的主机名,此变量代表您的域名。 5、REQUEST_URI是用于访问页面的URI。 如果文件中还有其他规则,请在文件顶部添加重写代码。 添加这些行之后,保存文件并刷新浏览器,所有HTTP请求都应重定向到HTTPS。 编辑.htaccess文件时,您不需要重新启动服务器,因为Apache会在每个请求中读取该文件。
实例:重定向HTTP到HTTPS,WWW到非WWW 可以使用两个URL访问任何网站:带www前缀(例如www.example.com)和不带www(例如example.com)的URL,大多数网站所有者都选择一个版本作为首选域并重定向到该域。 若要从HTTP重定向到HTTPS,从www重定向到站点的非www版本,请在.htaccess文件中添加以下几行: RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] 这里我们有两个条件,第一个检查连接是否不是HTTPS,第二个检查请求是否以www开头,如果其中一个条件为真([OR]运算符),则执行重写规则。
实例:将HTTP重定向到HTTPS,将非WWW重定向到WWW 如果您更喜欢网站的www版本,请使用以下规则从HTTP重定向到HTTPS,从非www重定向到www: RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^example\.com [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
结论 上面已经向您展示了如何编辑.htaccess文件,以将所有HTTP通信重定向到HTTPS的方法。 如果您有权访问Apache配置文件,则为获得更好的性能,应通过在域的主机中创建301重定向来强制执行HTTPS。
相关主题 |