【发布时间】:2015-05-15 17:55:58
【问题描述】:
我一直在寻找完美的 301 重定向。但是我找到了这么多解决方案,不知道什么是最好的。
这是我想做的事
- http://domain.tld/ → https://domain.tld/
- http://www.domain.tld/ → https://domain.tld/
- https://www.domain.tld/ → https://domain.tld/
最佳实践 .htacess?
<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>
这是我的首选代码。至少到现在为止。
替代方法
我还发现了许多其他从HTTP 重定向到HTTPS 的方法。例如:
1.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
少了一步?这里没有[R=301,L]?
2.
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]
Is a different order generally better?
我应该使用
RewriteRule ^(.*)$
而不是
RewriteRule (.*)
?
3.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]
使用完整域名是否有任何性能优势?我真的需要NE吗? ([R=301,L,NE] 与 [L,R=301])
所以,我向所有专家提出的问题:从HTTP 重定向到HTTPS 和从 重定向到HTTPS:// 的最佳(执行)方式是什么?
【问题讨论】:
标签: .htaccess mod-rewrite redirect https url-redirection