如何通过 .htaccess 将 HTTP 重定向到 HTTPS
.htaccess 基本上是一个在 Apache 服务器上使用的配置文件。前面的点表示无法查看文件,因为默认情况下它是隐藏的。.htaccess 文件定义了 Apache 如何从目录中提供文件。.htaccess 通常放置在域根目录中,但子目录也可以包含其他 .htaccess
SSH 或 FTP 可用于创建新文件或编辑 .htaccess 文件。
现在为了像之前讨论的那样重定向到 HTTPS,应该使用下面的代码:
重写引擎开启 RewriteCond %{HTTPS} off 重写规则 ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
让我们一一讨论上面的代码代表什么
重写引擎开启
上面的代码可以重写规则
RewriteCond %{HTTPS} off
上面的代码用于判断连接是否为HTTP请求类型,如果是则执行下一条命令
重写规则 ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这条规则是能够改写http://example.com/about到http://example.com /约或 http://www.example.com/about到HTTPS:/ / www.example.com/about
添加这些行后,您应该保存文件并在刷新后检查,此步骤将导致所有 HTTP 文件被重定向到 HTTPS
将 HTTP 重定向到 HTTPS 还有其他规则,例如:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
REQUEST_URI使用此 URI 访问页面
HTTP_HOST表示访问者访问站点时请求的主机名。
将非 WWW 重定向到 WWW,将 HTTP 重定向到 HTTPS
众所周知,WWW 或非 WWW Url 用于访问任何站点。可以将下面的行添加到 .htaccess 中以实现上面的重定向:
RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
必须满足两个条件才能进行重定向:
- 请求是否以 WWW 开头。
- 连接不应是 HTTPS
即使是条件之一也足以执行重写规则。
将非 WWW 重定向到 WWW,将 HTTP 重定向到 HTTPS
运行代码:
RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^example\.com [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]