如何解决这两个代码段之间有什么区别?
两个片段都将http重定向到https,但是其中一个片段适用于AWS Cloudfront分发,而另一个则不适用。单独使用,两者都可以正常工作。这两个代码段有什么区别?
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]
解决方法
嗯,两个之间有两个区别。
第一个块将重定向到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_HOST
是www.example.com
(区分大小写)。
由于它将重定向到与请求中的主机相同的主机,因此很可能会创建一个无限循环。关键区别在于您在条件中指定的[OR]
标志。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。