今天没事把自己的门户网站申请的一个免费的CA证书,门户用的phpcms做的,phpcms更换https链接好像还很麻烦,因为链接里面都带了域名和http协议,所以改动起来地方挺多的,看了网上很多教程都不完善,自己从头到尾修改并记录下来了。
首先改动的就不用说了,caches/configs/下的system.php文件内所有的http批量替换为https
然后你模版里面的链接这个也不用说了,我比较同意,域名都是{APP_PATH},{JS_PATH},{IMG_PATH}这些常量,没有直接写死
再接着就是后台的设置-》站点管理-》修改网站域名为https打头的,这里可能会修改不了,别急,还是要改底层文件,phpcms/modules/admin/下的site.php文件,第45行
if (!empty($domain) && !preg_match('/http:\/\/(.+)\/$/i', $domain)) { showmessage(L('site_domain').L('site_domain_ex2')); } 改为 if (!empty($domain) && !preg_match('/(http|https):\/\/(.+)\/$/i', $domain)) { showmessage(L('site_domain').L('site_domain_ex2')); }
还没完,这个文件还有一处,128行
if (!empty($domain) && !preg_match('/http:\/\/(.+)\/$/i', $domain)) { showmessage(L('site_domain').L('site_domain_ex2')); } 改为 if (!empty($domain) && !preg_match('/(http|https):\/\/(.+)\/$/i', $domain)) { showmessage(L('site_domain').L('site_domain_ex2')); }
这两处都只是把http改成了https
还没完,我们接着改,phpcms/modules/content/templates/下的content_list.tpl.php文件97行
elseif(strpos($r['url'],'http://')!==false) 改成 elseif(strpos($r['url'],'http://')!==false || strpos($r['url'],'https://')!==false)
这个是从后台列表点击到文章页的问题
然后后台翻页也是有问题的,还要改翻页文件phpcms/libs/functions/下的global.func.php 第796行
$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url); 改为 if(preg_match("https",$url)){ $url = str_replace(array('https://','//','~'), array('~','/','https://'), $url); }else{ $url = str_replace(array('http://','//','~'), array('~','/','http://'), $url); }
最后添加友情链接也会有问题,我们需要在友情链接的后台模版文件对JS的验证进行注释就可以了
找到phpcms/modules/link/templates/下的link_add.tpl.php和link_edit.tpl.php的
$("#link_url").formValidator({onshow:"<?php echo L("input").L('url')?>",onfocus:"<?php echo L("input").L('url')?>"}).inputValidator({min:1,onerror:"<?php echo L("input").L('url')?>"}).regexValidator({regexp:"^http(s?):\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&]*([^<>])*$",onerror:"<?php echo L('link_onerror')?>"})
这个JS的验证的http协议改成http(s?)即可
然后全站链接更新一遍,图片附件地址替换一遍,有时数量太大,你在后台更新了链接还是不行就要去数据库里面进行批量替换,然后在后台更新下全站缓存,栏目缓存,再生成一遍就行了。