discuz程序好像在windows iis系统服务器下可以兼容ssl,但是liunx系统就不行了,需要修改文件代码。
证书申请同样省略了,我不推荐用免费的证书,虽然个人用用也不错了。
discuz程序对ssl的支持真的太烂了,如果论坛不是很重要就别折腾吧,discuz官方也指不定要等到什么时候才会更新。
我是nginx独立服务器环境,就以这个为例了。
1:修改文件
source/class/discuz/discuz_application.php里面的
$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
修改为
$_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
还有uc_server/avatar.php里面的
define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
修改为
define('UC_API', strtolower(($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
2:修改网站后台设置,这里的uc要是不修改,头像不能用。
⑴:后台 > 全局 > 网站url设置改为带https的网址
⑵:后台 > 全局 > 域名设置 ,这里面如果设置了默认网址就删掉
⑶:后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https
⑷:UCenter后台 > 应用管理 > 应用的主URL,修改为https
3:修改 source/plugin/manyou/Service/DiscuzTips.php文件
在最下面,删掉或者注释这句,这是判断网站补丁啥的,如果不删,浏览器就会提示不安全的加载
echo $jsCode;
4:插件和js、css问题
很多插件不能自动转为https,以及部分插件调用了百度或者其他网站的js、css文件,那么这个就要你自己找到这个插件,把链接前面的http都修改为https了。
如果是js或者css,你可以把远程调用的文件下载到本地,然后修改本地文件的路径。由于每个插件不同,就不说了。
5:修改网站之前的http链接为https
这里最好去数据库批量修改,只需修改pre_forum_post数据表就行了,找到对应的数据库执行sql语句
UPDATE pre_forum_post SET message=REPLACE(message,’http://旧网址.com’,’https://新网址.com’);
6:修改nginx配置,让其强制跳转到https,做301跳转。把代码放到网站对应监听的80端口里面就行了。
可以这样
location / {
return 301 https://域名.com$request_uri;
}
也可以这样
rewrite ^ https://域名.com$request_uri? permanent;
ssl的配置也要在这里写好,
server {
listen 443 ssl;
server_name 域名;
ssl on;
ssl_certificate /域名crt路径;
ssl_certificate_key /域名key路径;
ssl_prefer_server_ciphers on;
7:网站后台更新缓存、重启nginx环境,应该就没啥问题了,普通用户用用就可以了。