如何使用.htaccess强制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'-检查连接是否属于HTTP请求类型。当条件满足时,执行下一行。我们只想重定向HTTP请求。如果我们忽略此条件,则会出现重定向循环。
- 'RewriteRule ^(。*)$https://%{HTTP_HOST}%{REQUEST_URI} [L,R = 301]'-使用状态代码301(永久移动)将所有HTTP请求重定向到HTTPS。此规则会将“ http://example.com/about”重写为“ http://example.com/about”,或者将“ 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)的URL。
大多数所有者都选择一个版本作为首选域并重定向到该域。
要从HTTP重定向到HTTPS,从www重定向到的非www版本,请在“ .htaccess”文件中添加以下几行:
RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$https://example.com/ [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/ [R=301,L]