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