怎么让phpcms支持https

这篇文章主要介绍“怎么让phpcms支持https”,在日常操作中,相信很多人在怎么让phpcms支持https问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么让phpcms支持https”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、如果已经安装好phpcms,则需要对caches/configs/system.php中的配置选项做替换,将"http://"全部替换为"https://"。如有必要,数据库中已存在的链接也要完全替换为https开头。

2、程序修改部分:
(1)修改phpcms/modules/admin/site.php 大约45行和128行的正则

('/http:\/\/(.+)\/$/i', $domain))

    修改为

('/(http|https):\/\/(.+)\/$/i', $domain))

(2)修改phpcms/modules/admin/templates/setting.tpl.php 大约18行中的正则

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

    修改为

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

(3)修改phpcms/modules/admin/templates/site_add.tpl.php 大约13行中的正则

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

    修改为

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

(4)修改phpcms/modules/admin/templates/site_edit.tpl.php 大约11行中的正则

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

    修改为

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

(5)修改phpcms/modules/link/index.php 大约41行和51行中的正则

/^http:\/\/(.*)/i

    修改为

/^http[s]?:\/\/(.*)/i

(6)修改phpcms/modules/link/templates/link_add.tpl.php 大约10行中的正则

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

    修改为

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

(7)修改phpcms/modules/link/templates/link_edit.tpl.php 大约11行中的正则

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

    修改为

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

    严格按照以上步骤修改后,注册用户 帐号登录等操作完全正常 和PHPSSO通信完全正常,后台添加信息和前台链接URL完全正常

    注意:
    a.如注册用户提示‘操作失败’,请在后台会员模块设置中关闭‘注册时可选会员模型’或者保证会员不少于两个会员模型

    b.在PHP5.6或以上的PHP版本中会出现和PHPSSO无法正常通信的情况,因为PHP5.6及以上fsockopen和file_get_contents等函数openssl需要验证目标的SSL证书是否可信,需要安装openssl根证书才可以,否则openssl会报警告信息 证书验证失败!
    如需在php5.6或以上版本中使用HTTPS的请参阅PHP官方有关php5.6和openssl的资料http://php.net/manual/en/migration56.openssl.php

3、经过上面修改后,phpcms中的内容可通过https访问,但分页出现错误。解决方法为:
    打开文件 phpcms\libs\functions \global.func.php ,找到738行的位置:

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

    修改为

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

经过以上三步,phpcms完美支持https,结合页面静态化和url伪静态规则,亲测静态页面也可用https。
此时的网站实际上通过http和https都能访问。

补充:

经过以上所有步骤后,出现新的问题:新闻列表页面点击标题跳转的URL会重复带有网站域名。解决方法如下:
打开 phpcms\modules\content\templates\content_list.tpl.php,找到97行的位置:

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

修改为:

strpos($r['url'],'https://')!==false

到此,关于“怎么让phpcms支持https”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注本站网站,小编会继续努力为大家带来更多实用的文章!

相关推荐:

Python HTTPS怎么配_Nginx SSL证书配置与转发到Gunicorn

根本原因是nginx未正确转发请求至gunicorn或gunicorn拒绝连接,常见于proxy_pass地址错误、gunicorn未监听指定地址/端口、Unixsocket权限不足、SSL证书路径或权限配置错误、缺少X-Forwarded-Proto头导致协议透传失败,以及Let’sEncrypt...

Python Caddy 的自动 HTTPS 与 Python 后端

根本原因是caddy仅终止公网tls,反向代理python服务时默认走http明文通信;需确保python监听0.0.0.0:8000、caddyfile中reverse_proxy指向http://127.0.0.1:8000并配置transporthttp及x-forwarded-proto头。...

phpcms2008远程代码执行漏洞的分析及如何修复

phpcms2008远程代码执行漏洞的分析及如何修复,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。phpcms2008远程代码执行漏洞描述:近日,互联网爆出PHPCMS2008代码注入漏洞(CVE-2018-19127)...

tornado中怎么实现https访问功能

tornado中怎么实现https访问功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先,我们需要的当然就是Tornado、Python、OpenSSL,这里只是记录建立ssl,需要其他linux下知识的暂时不讲,需要的话以后另...

解决phpcms目录不存在的问题

这篇文章给大家分享的是有关解决phpcms目录不存在的问题的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。phpcms目录不存在怎么办?phpcms上传提示找不到临时文件夹/目录(解决方法)【phpcms后台上传找不到临时文件夹】这个错误提示是自定义的,比如某shop程序上...

node如何发出https请求

本篇内容主要讲解“node如何发出https请求”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“node如何发出https请求”吧! 方法:1、用HTTP模块的“https.get()”方法发出get请求;2、用通用的“https.request()”方法...

怎么用Spring Boot实现https ssl免密登录

本篇内容主要讲解“怎么用SpringBoot实现httpsssl免密登录”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用SpringBoot实现httpsssl免密登录”吧!创建服务端证书为了开启https,我们需要一份证书。实际开发中,会在网上申请...