两个版本的.htaccess 301重定向

问题描述 投票:1回答:1

我想将我的网站移动到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>
.htaccess ssl mod-rewrite https
1个回答
0
投票

大多数时候有不同的方法来实现一个人的目标,最好的方法的答案可以是意见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}是服务器变量而不是从正则表达式中提取。

© www.soinside.com 2019 - 2024. All rights reserved.