将所有流量重定向到HTTPS的正确方法是什么?

时间:2017-02-09 作者:Sekhemty

我想做的是,我在一个托管服务上管理一个网站,该服务最近启用了激活免费SSL证书的选项。我想将我的所有流量重定向到HTTPS版本,并将其设置为使普通HTTP版本不再可用。

我所尝试的是在控制面板上启用SSL证书,并尝试遵循托管服务所解释的过程,这基本上包括向.htaccess 文件,即此文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
我的当前.htaccess 已由Wordpress本身的条目和几个插件、W3 Total Cache和Wordfence Security填充(here is a link to pastebin, 抱歉,我无法在此处正确格式化)。

我已经将托管公司的代码附加到文件的末尾,但它没有正常工作,因此网页呈现不好,URL本身被随机代码修改。我不知道这是一个重定向循环,是与W3TC的缩小冲突,还是两者的结合
经过一点代码检查后,我可以猜到.htaccess 文件中有各种条目<IfModule mod_rewrite.c> 条件,可能会产生冲突。

我需要知道的是如何使用.htaccess 文件以使仅HTTPS网站正常工作Settings > General, 我应该更改地址吗http://www.example.comhttps://www.example.com? 应该在修改之前或之后进行.htaccess?.htaccess 地址,或者它们做同样的事情,我应该只应用其中一个

1 个回复
SO网友:Johansson

Number 1

如果您希望您的网站只能通过HTTPS访问,则需要将此代码添加到.htaccess 文件,替换域名:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
</IfModule>
这会将任何访问从非SSL重定向到您网站的SSL版本。

Number 2

是的,您需要更改Website AddressSite Address 在管理面板中设置为HTTPS。最好在编辑.htaccess 文件,自编辑.htaccess 当您的网站URL位于HTTP中时,所有流量将重定向到HTTPS。还要确保脚本、样式和图像可以通过SSL访问,以防止渲染问题。

Number 3

对这个htaccess 将流量从HTTP重定向到HTTPS,而Site Address 声明您的主域正在使用HTTPS。

如果您在.htaccess 文件,最佳做法是将其完全复制到pastebin,并使用链接更新问题。我会试着看看是否有一条线导致您的.htaccess 文件