解决Discuz网址带端口问题

问题场景

在一台服务器中部署了多个站点,站点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网址带端口问题_第1张图片
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

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

你可能感兴趣的:(解决Discuz网址带端口问题)