【发布时间】:2018-05-03 22:30:39
【问题描述】:
我一直在寻找完美的 301 重定向。但我找到了这么多解决方案,不知道哪一个是最好的。虽然我尝试过前 2 个选项并且它们正在工作。
这是一个全新的网站,我想将所有内容从 http://www.exampledomain.com 重定向到 https://www.exampledomain.com
如果有人能帮我解决这个问题,那就太好了。
我找到了很多参考资料,如下:
1。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.exampledomain.com/$1 [R,L]
</IfModule>
2。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
3。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
4。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
5。
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
6。
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]
非常感谢, 周杰伦
【问题讨论】:
-
这些规则并不都做同样的事情,有些也适用于子域,有些则不会。有些会依赖端口,有些会依赖 HTTPS 环境变量。有些会根据 URL 重定向到不同的目标。如果您在处理 SSL 并将纯 HTTP 与您的规则所在的后端进行通信的反向代理后面,那么它们都不会做您想做的事情(如果您不将其设置为执行重定向,则可能会像 CloudFlare 一样) .