我已经在OpenCart网站上安装了SSL证书,但是某些页面与HTTPS的工作正常,但类别页面无法与HTTPS一起使用。我还需要更改数据库中的所有URL吗?在配置文件中,我已经设置了https。
其中一些可能不适用于您的特定安装,但为了创建一个全面的答案,我试图在此处介绍所有基础:
注意:如果商店的表前缀不以 oc_
- 打开
config.php
和admin/config.php
并将所有这些常数URL声明更改为HTTPS - 确保包括HTTP_SERVER
和HTTP_CATALOG
- 在您的管理面板中,请转到
system > settings
,单击edit
,然后在server
表设置Use SSL:
到Yes
。 - 在您的数据库中更新
oc_order
表中的store_url
列,以便所有链接均为HTTPS。这很重要,因为如果API尝试访问网站的HTTP版本,则更新订单可能会失败。您可以使用此查询:UPDATE oc_order SET store_url = REPLACE(store_url, 'http:', 'https:')
- 如果您的描述表中有任何硬编码的图像和链接,则应该更换这些图像和链接。SSL仍将工作,但会在浏览器栏中显示警告标志。这包括
oc_product_description
,oc_category_description
和您可能创建HTML内容的任何其他表。 - 与您的主题文件相同。在
footer.tpl
中找到硬编码的http://
链接和图像和header.tpl
的启动器很常见。您可以简单地浏览网站,查看是否没有任何页面显示浏览器中的绿色锁图标并从那里拿走。 - 另一个罪魁祸首https可以是第三方扩展,在
oc_modification
表中,可以作为文件和oc2中存在。 - 最后,在
.httaccess
中创建重定向,以优雅地让流量知道您的页面现在可以在HTTPS上找到。我已经排除了robots.txt
和OpenBay路由的任何连接,因为根据经验,当我尝试重定向eBay webhooks时,它会破坏事物,并且默认情况下它们似乎仅是http
。我怀疑这可能是关于OpenBay如何处理这些请求的缺点,或者可能是配置问题,但是我找不到没有破坏OpenBay的解决方法,因此现在我建议您将这些请求保持不变。我在.htaccess
中使用了此内容:
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !/robots.txt$
RewriteCond %{QUERY_STRING} !^route=ebay/openbay/*
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
应该这样做!