两个版本的.htaccess 301重定向
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个版本的.htaccess 301重定向相关的知识,希望对你有一定的参考价值。
我想将我的网站移动到https,我需要在.htaccess文件中添加规则以设置301重定向。我已经阅读了很多这方面的指南,似乎有很多不同的可能性,但其中有两个不断出现。
为什么这两个选项不同?他们做了什么不同的事情?
选项1
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
选项2
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>
答案
大多数时候有不同的方法来实现一个人的目标,最好的方法的答案可以是意见b(i)。
选项1
- 将重定向所有非SSL流量,独立于您请求的侦听端口(您可以同时收听多个端口,如80,81,...)
- 将任何FQDN重定向到其https等效项,保留请求URI。您不需要对其进行调整,除非您希望将多个FQDN重定向到同一个https站点。
- 返回码为301,任何代理都可以轻松缓存
选项2
- 将仅重定向到80端口的流量。如果您正在收听另一个端口,这很可能在巨大的托管平台上,特别是在负载均衡器之后,您将需要从80更改为另一个值
- 将任何FQDN重定向到同一个https站点(www.yoursite.com),保留请求URI。
- 返回代码为302,如果未设置其他标头,则可能不会缓存(Cache-Control)
选项1对管理员来说需要较少的工作,我相信它是两者中使用最多的。如果两者之间存在任何性能差异,那么它可能是可以忽略的,但我认为选项1更好,因为%{REQUEST_URI}是服务器变量而不是从正则表达式中提取。
以上是关于两个版本的.htaccess 301重定向的主要内容,如果未能解决你的问题,请参考以下文章
通过 htaccess 将 index.html 和所有 http、https、www 和非 www 版本的主页 URL 重定向到 https://www 根 URL 的 301