我已经购买了 ssl 证书,我在设置中启用了 SSL 设置,并且我将两个配置文件都更改为转到 https,但是当我访问http://bit.ly/TCkEBv时,第一页是 https,其余的不是。我怎样才能解决这个问题?
3 回答
我意识到这是一个旧线程,但考虑到最近 google SSL-everywhere 索引更改,我认为它是相关的。以下示例将使 OC 在所有链接中使用 https。您必须更改 system/library/url.php 中的 3 个字符。他们在论坛上删除了这个是可以理解的,但我们已经在混合 SSL 多存储上运行了一周的生产流量,没有任何问题。
警告:您的 mod 可能会有所不同 - 在启用此功能后在测试中运行它们...尤其是任何重定向管理器。这是 1.5.6 的调整:
打开 store/system/library/url.php 并$url = $this->url;
在第 18 行附近的某处找到一个 IF 语句。将其更改为$url = $this->ssl;
然后就可以了。
PS:还有一种未经测试的方法可以将 https-preferred 作为标头发送,$response->addHeader('Strict-Transport-Security: max-age=31536000');
但我不确定将它放在 index.php 之外的最佳位置。此外,虽然它在测试中有效,但不确定所有服务器的影响。标头控制器似乎合乎逻辑,但并非所有 OC 区域都使用标头控制器 :)。为此尝试最佳放置....即使它看起来有效,也不要在 $url 复制器中执行此操作。
根据论坛帖子,这实际上并不是购物车设置方式的错误 - 也就是说,大多数页面没有设置为 HTTPS,一旦您单击非 HTTPS 链接就会恢复为 HTTP
假设您有一个名为 example.org 的域,而不是更改代码,在 Apache 中,您可以这样做......
除了您的 Domain-SSL.conf 之外,您还可以将该配置复制到 Domain.conf 并对其进行编辑以使用端口 80 而不是 443
然后,将此行添加到顶部的服务器定义中,就在 DirectoryIndex... 之前
Redirect / https://example.org
这将简单地将每个请求重定向回 SSL 配置,在每个链接前添加 https://。OC 不需要更改代码。
这已经在我繁忙的生产服务器上运行了几年,没有出现任何问题。