我正在使用Dreamhost并拥有安全托管和安全证书.我正在尝试将纯HTTP站点重定向到HTTPS站点.这样做我有点困惑.
我想http://www.example.com/
重定向到https://www.example.com/
我将什么文件放在哪个文件中?
这应该工作.当您指出.htaccess
该概念与Apache重写规则相关时:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
只需将其放在您的.htaccess
文件中,所有非HTTPS请求都将定向到HTTPS.
你可以测试这个的方法是这样使用curl
; 当然更改http://www.example.com
以匹配您的实际域名/主机名称:
curl -I -L http://www.example.com
该-I
标志告诉curl
发送回标题和-L
告诉curl
跟随重定向.如果您.htaccess
正确设置了该设置,那么您将看到第一跳到非HTTPS站点,然后通过.htaccess
重写规则进行重定向管理- 将其发送到HTTPS站点上的下一个跃点.
关于服务器响应消息和潜在SEO内容的一个小注意事项:当您使用最终的Apache重写规则时,默认的服务器响应代码将是:
HTTP/1.1 302 Found
阿302的HTTP响应被认为是一个临时重定向.如果您绝对希望普通HTTP流量转到同一服务器上的HTTPS等效项,那么您应该发送301 HTTP响应,这是一个永久重定向.要使用该Apache重写规则发送301代码,只需调整最后一行,使其全部如下所示:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
在这之后,响应应该是:
HTTP/1.1 301 Moved Permanently
一切都应该是好的.但是 - 而不是跳过一个奇怪的兔子洞 - 谷歌似乎明白大多数人错误地发送302标题,当他们的意思是301,所以看起来 - 根据这篇文章 - 302重定向中的谷歌因素加上某种时间范围.如果你在一段时间内发送足够的302s,谷歌会推断这种变化是永久性的,并将302视为301.
有点混乱,但在一天结束时,如果你想重定向永久性,那么总是设置301响应标题,让每个人的生活更轻松.