【问题标题】:Two versions of .htaccess 301 redirect.htaccess 301 重定向的两个版本
【发布时间】:2018-08-09 05:17:43
【问题描述】:

我希望将我的网站移至 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】:

    大多数时候有不同的方法可以实现一个人的目标,对于哪种方法最好的答案可以是意见 b(i)ased。

    选项 1

    • 将重定向所有非 SSL 流量,与您请求的侦听端口无关(您可以同时侦听多个端口,例如 80、81、..)
    • 会将任何 FQDN 重定向到其 https 等效项,同时保留请求 URI。您不需要对其进行调整,除非您希望将多个 FQDN 重定向到同一个 https 站点。
    • 返回码为 301,任何代理都可以轻松缓存

    选项 2

    • 将仅重定向进入 80 端口的流量。如果您正在侦听另一个端口,这很可能是在大型托管平台上,尤其是在负载均衡器后面,您需要从 80 更改为另一个值
    • 会将任何 FQDN 重定向到同一个 https 站点 (www.yoursite.com),同时保留请求 URI。
    • 返回码为302,如果没有设置其他header,可能不会被缓存(Cache-Control)

    选项 1 需要较少管理员的工作,我相信它是两者中最常用的。如果两者之间有任何性能差异,则可能可以忽略不计,尽管我认为选项 1 更好,因为 %{REQUEST_URI} 是服务器变量,不是从正则表达式中提取的。

    【讨论】:

      猜你喜欢
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2011-01-03
      • 2012-03-10
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多