Answers:
默认答案是,根据您的设置,将不安全的基本URL设置为https://,如果用户尝试使用http://,这已经足以进行重定向
也许在Web服务器级别进行重定向会更好,因为它避免了先通过php进行请求。
并且,如果您想要真正安全的解决方案,则应在https://hstspreload.appspot.com/上添加您的网站。但是请谨慎操作,如果您需要更改证书,这可能会导致大问题。让您的托管人关心此部分。
您可以使用apache中的.htaccess进行此操作。使用这些行:
############################ Force SSL ############################
RewriteCond %{HTTP_HOST} !^localhost$
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
############################ Force SSL ############################
对于任何绊倒这个的人(像我一样)
不要使用htaccess。在管理员下Stores -> General -> Web and change -> Use Secure URLs on Storefront -> Yes and Use Secure URLs in Admin -> Yes
无需编辑任何文件。
我已经尝试过以前的解决方案,即使它们似乎可以工作,但仍将我锁定在管理面板之外(不完全了解原因)。
要再次进入管理面板,我必须进入phpmyadmin并进入数据库表core_config_data并更改两个路径:web / secure / use_in_adminhtml和web / unsecure / base_url再次回到管理面板。而且,如果必须在数据库中进行编辑,请不要忘记清除缓存文件夹...
所以我改用以下.htaccess解决方案,该解决方案也让我也可以登录到管理员
# AFTER THIS SECTION
############################################
## workaround for HTTP authorization
## in CGI environment
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# PUT THIS
############# ALL PAGES HTTPS #################
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !/admin/
RewriteCond %{REQUEST_URI} !/downloader/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
############# ALL PAGES HTTPS #################
希望它能帮助某人
通过http访问时,.htaccess上的大多数方法会将大多数页面重定向到主页。
示例:http : //www.mystore.com/productA.html => http://www.mystore.com/
而不是https://www.mystore.com/productA.html
我通过以下.htaccess重写(当然,仅Apache)解决了该问题:
#Force SSL
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
参见来源。