TEL:
解决Discuz非80端口反向代理后 网址带端口问题
| 发布时间: 2018-11-13 12:24:02 | 2081 次浏览

问题场景

在一台服务器中部署了多个站点,站点A使用了80端口,站点B(Discuz)使用了81端口,并使用了反向代理,将/bbs给81端口处理,结果Discuz站点的链接都变成了http://www.xxx.com:81/bbs/xxx这样带端口的地址。

解决方案

这里讲述的是Discuz X3的处理方法

编辑/source/class/discuz/discuz_application.php文件,找到200行的位置。
这里的$_G['siteurl']就是http://www.xxx.com:81/bbs/, 因此我们将这个端口号去掉就能解决上述问题。
可以使用文本替换的方式,或者使用正则表达式。
添加如下代码

$_G['siteurl'] = str_replace(':81', '', $_G['siteurl']);

discuz_application.php

其他Discuz版本解决方案

  • Discuz X1.5
    编辑/source/function/function_core.php文件,注释此行
$port = empty($_SERVER['SERVER_PORT']) || $_SERVER['SERVER_PORT'] == '80' ? '' : ':'.$_SERVER['SERVER_PORT'];
  • Discuz X2.5
    编辑/source/class/discuz/discuz_application.php文件,注释此行
$_G['siteport'] = empty($_SERVER['SERVER_PORT']) || $_SERVER['SERVER_PORT'] == '80' ? '' : ':'.$_SERVER['SERVER_PORT'];

More

如果修改后未生效,更新缓存即可解决

下一篇: CentOS Docker 安装