如何将opencart网站的http转为https
How to move opencart site http to https
我已经在我的 opencart 网站上安装了 ssl 证书,但有些页面使用 https 可以正常工作,但类别页面不能使用 https。我还需要更改数据库中的所有 url 吗?在配置文件中,我已经设置了 https.
其中一些可能不适用于您的特定安装,但为了创建一个全面的答案,我已尝试在此处涵盖所有基础:
注意:如果名称不以 oc_
[=49= 开头,您可能需要根据商店的 table 前缀调整 table 名称]
- 打开
config.php
和 admin/config.php
并将所有这些常量 url 声明更改为 https - 确保包含 HTTP_SERVER
和 HTTP_CATALOG
- 在您的管理面板中转到
system > settings
,单击 edit
,然后在 server
table 中将 Use SSL:
设置为 Yes
。
- 在您的数据库中更新
oc_order
table 中的 store_url
列,以便所有链接都是 https。这很重要,因为如果 api 尝试访问您网站的 http 版本,更新订单可能会失败。您可以使用此查询:UPDATE oc_order SET store_url = REPLACE(store_url, 'http:', 'https:')
- 如果您的描述 table 中有任何硬编码图像和链接,您也应该替换它们。 SSL 仍然有效,但会在浏览器栏中显示警告标志。这包括
oc_product_description
、oc_category_description
以及您可能在其中创建了 html 内容的任何其他 table。
- 与上面的主题文件相同。对于初学者来说,在
footer.tpl
和 header.tpl
中找到硬编码的 http://
链接和图像是相当常见的。您可以简单地浏览您的网站,看看是否有任何页面未在浏览器中显示绿色锁图标,然后从那里获取它。
- 另一个破坏 https 的罪魁祸首可能是第三方扩展,它既可以作为文件存在,也可以作为 ocmods 在
oc_modification
table. 中存在
- 最后,在
.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]
应该这样做!
我已经在我的 opencart 网站上安装了 ssl 证书,但有些页面使用 https 可以正常工作,但类别页面不能使用 https。我还需要更改数据库中的所有 url 吗?在配置文件中,我已经设置了 https.
其中一些可能不适用于您的特定安装,但为了创建一个全面的答案,我已尝试在此处涵盖所有基础:
注意:如果名称不以 oc_
[=49= 开头,您可能需要根据商店的 table 前缀调整 table 名称]
- 打开
config.php
和admin/config.php
并将所有这些常量 url 声明更改为 https - 确保包含HTTP_SERVER
和HTTP_CATALOG
- 在您的管理面板中转到
system > settings
,单击edit
,然后在server
table 中将Use SSL:
设置为Yes
。 - 在您的数据库中更新
oc_order
table 中的store_url
列,以便所有链接都是 https。这很重要,因为如果 api 尝试访问您网站的 http 版本,更新订单可能会失败。您可以使用此查询:UPDATE oc_order SET store_url = REPLACE(store_url, 'http:', 'https:')
- 如果您的描述 table 中有任何硬编码图像和链接,您也应该替换它们。 SSL 仍然有效,但会在浏览器栏中显示警告标志。这包括
oc_product_description
、oc_category_description
以及您可能在其中创建了 html 内容的任何其他 table。 - 与上面的主题文件相同。对于初学者来说,在
footer.tpl
和header.tpl
中找到硬编码的http://
链接和图像是相当常见的。您可以简单地浏览您的网站,看看是否有任何页面未在浏览器中显示绿色锁图标,然后从那里获取它。 - 另一个破坏 https 的罪魁祸首可能是第三方扩展,它既可以作为文件存在,也可以作为 ocmods 在
oc_modification
table. 中存在
- 最后,在
.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]
应该这样做!