两个版本的.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 301 与重定向 404

具有排除条件的 301 重定向 (htaccess)

htaccess 301重定向整个网站但有例外

htaccess 301 重定向新基础域名的通配符

url变量的htaccess 301重定向问题

通过 htaccess 将 index.html 和所有 http、https、www 和非 www 版本的主页 URL 重定向到 https://www 根 URL 的 301