使用.htaccess将HTTP转向为HTTPS

.htaccess是一个配置文件,对于 Apache webserver 服务器来说,每个目录下都可以有一份配置文件。这个文件被用来定义,Apache 如果从它所处的目录中处理文件,并且启用/禁用其他特性。

通常,.htaccess文件在域名根目录,但是你可以在子目录中定义其他的.htaccess文件。

想要将 HTTP 请求转向到 HTTPS,打开.htaccess文件,添加下面的代码:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

下面一一介绍每一行代码的用途:

如果在这个文件中,还有其他规则,请在文件顶部添加其他的重写代码。

就这样!在添加这些内容后,保存文件,并且刷新你的浏览器。所有的 HTTP 请求将会被转向到 HTTPS。

在编辑.htaccess文件时,你不需要重启服务器,因为 Apache 会在每次请求时读取这个文件。

这里是另外一个例子,更多通用规则,将 HTTP 转向到 HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

将所有 HTTP 转向到 HTTPS 并且 WWW 转向到 Non-WWW

任何网站都可以通过两个 URL 进行访问:带 www 前缀的(例如: www.example.com)和不带 www 前缀的(例如:example.com)。大部分网站拥有者选择其中一个版本作为自己最喜欢的域名,并且转向它。

想要将所有的 HTTP 请求转向 HTTPS,并且从 www 转向到 non-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 开头。如果其中一个条件为 true ([OR] 运算符),将会执行重写规则。

将所有 HTTP 转向到 HTTPS 并且 Non-WWW 转向到 WWW

如果你喜欢 www 版的网站,使用下面的规则,将请求从 HTTP 转向到 HTTPS,并且从 non-www 转向到 www。

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

 

(备注:以上内容转自网络)