使 OpenCart 2.2 安装 100% HTTPS
Making OpenCart 2.2 Installation 100% HTTPS
我今天刚刚在我的网站上安装了 OpenCart 2.2,运行ning 在 Apache 服务器上,运行ning PHP 版本 7.0.8。
该网站已经安装了 SSL 证书,我可以通过以下方式访问购物目录:
https://example.com/printshop/index.php
我希望整个设置在 SSL 上 运行,所以我编辑了相关的配置文件如下:
https://example.com/printshop/config.php
// HTTP
define('HTTP_SERVER', 'https://example.com/printshop/');
// HTTPS
define('HTTPS_SERVER', 'https://example.com/printshop/');
https://example.com/printshop/admin/config.php
// HTTP
define('HTTP_SERVER', 'https://example.com/printshop/admin/');
define('HTTP_CATALOG', 'https://example.com/printshop/');
// HTTPS
define('HTTPS_SERVER', 'https://example.com/printshop/admin/');
define('HTTPS_CATALOG', 'https://example.com/printshop/');
我遇到的问题是页面不是 100% 安全的,因为表单操作指向不安全的 URL - 例如
<form action="http://example.com/printshop/index.php?route=common/currency/currency" method="post" enctype="multipart/form-data" id="form-currency">
这同样适用于登录表单(即它的操作指向 http 而不是 https):
https://example.com/printshop/admin/index.php?route=common/login
并且从任何页面打印商店徽标(保存在 <div id="logo">
中)returns 用户到非 HTTPS 页面。
除了像我已经完成的那样更改配置文件中的 URLs 之外,是否没有任何全局设置允许我设置安装的 URL?
已更新以包含解决方案
感谢@Vipul Jethva 的建议,我找到了解决方案。
编辑/system/library/url.php
更改代码自:
public function link($route, $args = '', $secure = false) {
if ($this->ssl && $secure) {
$url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
} else {
$url = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
}
...
}
收件人:
public function link($route, $args = '', $secure = true) {
if ($this->ssl && $secure) {
$url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
} else {
$url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
}
...
}
另外确保更新安装根目录中的 config.php,并且 admin/config。php 也指向 https。
s ,
控制器文件中有以下代码。
$this->url->link('common/home');
您需要传递最后两个参数,例如,
$this->url->link('common/home','',true);
最后两个参数用于 SSL。
如果您需要检查代码。然后得到 System -> Library -> Url.php file.
Default $secure parameter is false.
要么将默认 $secure 参数设置为 true,要么在控制器文件中设置最后一个参数。
希望对您有所帮助。
我今天刚刚在我的网站上安装了 OpenCart 2.2,运行ning 在 Apache 服务器上,运行ning PHP 版本 7.0.8。
该网站已经安装了 SSL 证书,我可以通过以下方式访问购物目录:
https://example.com/printshop/index.php
我希望整个设置在 SSL 上 运行,所以我编辑了相关的配置文件如下:
https://example.com/printshop/config.php
// HTTP
define('HTTP_SERVER', 'https://example.com/printshop/');
// HTTPS
define('HTTPS_SERVER', 'https://example.com/printshop/');
https://example.com/printshop/admin/config.php
// HTTP
define('HTTP_SERVER', 'https://example.com/printshop/admin/');
define('HTTP_CATALOG', 'https://example.com/printshop/');
// HTTPS
define('HTTPS_SERVER', 'https://example.com/printshop/admin/');
define('HTTPS_CATALOG', 'https://example.com/printshop/');
我遇到的问题是页面不是 100% 安全的,因为表单操作指向不安全的 URL - 例如
<form action="http://example.com/printshop/index.php?route=common/currency/currency" method="post" enctype="multipart/form-data" id="form-currency">
这同样适用于登录表单(即它的操作指向 http 而不是 https):
https://example.com/printshop/admin/index.php?route=common/login
并且从任何页面打印商店徽标(保存在 <div id="logo">
中)returns 用户到非 HTTPS 页面。
除了像我已经完成的那样更改配置文件中的 URLs 之外,是否没有任何全局设置允许我设置安装的 URL?
已更新以包含解决方案
感谢@Vipul Jethva 的建议,我找到了解决方案。
编辑/system/library/url.php
更改代码自:
public function link($route, $args = '', $secure = false) {
if ($this->ssl && $secure) {
$url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
} else {
$url = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
}
...
}
收件人:
public function link($route, $args = '', $secure = true) {
if ($this->ssl && $secure) {
$url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
} else {
$url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
}
...
}
另外确保更新安装根目录中的 config.php,并且 admin/config。php 也指向 https。
s ,
控制器文件中有以下代码。
$this->url->link('common/home');
您需要传递最后两个参数,例如,
$this->url->link('common/home','',true);
最后两个参数用于 SSL。
如果您需要检查代码。然后得到 System -> Library -> Url.php file.
Default $secure parameter is false.
要么将默认 $secure 参数设置为 true,要么在控制器文件中设置最后一个参数。
希望对您有所帮助。