这两个代码片段有啥区别?

Posted

技术标签:

【中文标题】这两个代码片段有啥区别?【英文标题】: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]

【问题讨论】:

【参考方案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] 标志。

【讨论】:

以上是关于这两个代码片段有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

这两个代码片段之间有区别吗?如果有,那又如何? [复制]

字符串插值和片段之间有啥显着区别吗?

活动和片段之间有啥区别?

这些 C++ 代码片段有啥作用?

这个代码片段有啥作用?

有趣的 C++ 代码片段,有啥解释吗? [复制]