【问题标题】:What is the difference between these 2 snippets of code?这两个代码片段有什么区别?
【发布时间】:2021-01-06 05:48:11
【问题描述】:

两个 sn-ps 都将 http 重定向到 https,但一个适用于 AWS Cloudfront 分发,而另一个不适用。就其本身而言,两者都可以正常工作。这2个sn-ps的代码有什么区别?

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
    RewriteRule ^/(.*) https://example.com/$1 [R,L] 
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

【问题讨论】:

    标签: amazon-web-services redirect mod-rewrite https amazon-cloudfront


    【解决方案1】:

    嗯,两者之间有一些区别。

    第一个块将重定向到https://example.com/*

    如果HTTPS 不是ON 如果HTTP_HOST 既不是localhost 也不是127.0.0.1

    第二个块将使用 https 协议重定向到与请求中使用的主机相同的主机。

    例如:

    发件人:http://www.example.com/test?1=2&3=4

    收件人:https://www.example.com/test?1=2&3=4

    如果HTTPS 不是ON 或者如果HTTP_HOSTwww.example.com(鼓励案例)。

    由于它将重定向到与请求中的主机相同的主机,这很可能会创建一个无限循环。关键区别在于您的条件中指定的 [OR] 标志。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多