问题场景
在一台服务器中部署了多个站点,站点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版本解决方案
- 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
如果修改后未生效,更新缓存即可解决