15621857753

phpcms全站设置ssl 亲测前端和后台都支持https

来源:齐鲁建站 栏目:开发教程 阅读: 日期:2022-09-28

本文介绍了phpcms全站设置ssl的方法,前端和后台都支持https,这是目前小编看到的最全面的SSL设置教程,逐一设置完后就可以实现全站SSL效果了。

下面来说说phpcms全站设置ssl的方法,小编亲测可行,来看看前端和后台都支持的https方法吧。

一、前端修改

1、全站搜索

http:\/\/(.+)\/$

替换成

^(http(s)?:)?\/\/(.+)\/$

2、基本配置

打开 phpcms/modules/admin/templates/setting.tpl.php

找到

http:\/\/(.+)[^/]$

改成

^(http(s)?:)?\/\/(.+)[^/]$

3、友链模块

打开 phpcms/modules/link/templates/link_add.tpl.php和link_edit.tpl.php

找到

^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&]*([^<>])*$

改成

^(http(s)?:)?\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&]*([^<>])*$

4、扩展-来源

打开 phpcms/modules/admin/templates/copyfrom_add.tpl.php和copyfrom_edit.tpl.php

找到

^http://

改成

^(http(s)?:)?\/\/(.+)\/$

5、扩展-关联链接

打开 phpcms/modules/admin/templates/keylink_add.tpl.php和keylink_edit.tpl.php

找到

^http:

改成

^http(s)?:\/\/

二、通信及后台修改

1、后台内容列表

这部分很重要,牵扯到整个后台的分页,不仅限于内容分页

打开 phpcms/modules/content/templates/content_list.tpl.php

97行找到

} elseif(strpos($r['url'],'http://')!==false) {

改成

} elseif(preg_match('/^(http(s)?:)?\/\//', $r['url'])) {

2、后台分页,这部分很重要,牵扯到内容管理里的标题超链

打开地址 phpcms/libs/functions/global.func.php

找到pageurl函数,没修改过的在784行,里面找到

$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);

改成

$url = preg_replace(array('/^((\w+):)?\/\//', '/\/{2,}/', '/~/'), array('$1~', '/', '//'), $url);

打开 /phpsso_server/api/uc_client/client.php

找到

$port = !empty($matches['port']) ? $matches['port'] : 80;

改成

$port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme'] == 'https' ? 443 : 80);

找到

$port = !empty($matches['port']) ? $matches['port'] : 80;

改成

$port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme'] == 'https' ? 443 : 80);

打开 /phpcms/libs/classes/http.class.php

找到

$port = $matches['port'] ? $matches['port'] : 80;

改成

$port = !empty($matches['port']) ? $matches['port'] : ($matches['scheme']=='https' ? 443 : 80); $protocol = ('https' == $matches['scheme']) ? 'ssl://' : '';

找到

$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);

改成

$fp = @fsockopen($protocol.$host, $port, $errno, $errstr, $timeout);

打开 /phpcms/libs/classes/http.class.php

找到

$s = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0;

改成

$s = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')|| ( isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 1 : 0;

打开 phpcms/modules/member/classes/client.class.php里找到_ps_post函数

找到

$port = !empty($matches['port']) ? $matches['port'] : 80;

改成

$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';

展开