ThinkPHP6.0.3的URL生成遇到反向代理的时候有BUG

浏览:800 发布日期:2020/09/21 分类:ThinkPHP6专区
我用的thinkphp 6.0.3,开启了多应用模式
监听的是8000端口
我用nginx(监听80端口)反代,绑定了域名www.abc.com。
于是我正常访问用的是 http://www.abc.com

有一条路由规则如下:Route::get('/oauth/<platform>/callback', '\kkqy\controller\:platform@callback')->name('oauth_callback');如果我使用url('/oauth/wechatmedia/callback', [], false, true);生成的url是:http://www.abc.com/oauth/wechatmedia/callback这个是我需要的

但是如果用url('oauth_callback', ['platform' => 'wechatmedia'], false, true);生成的url却是:http://www.abc.com:8000/oauth/wechatmedia/callback多了:8000这个端口,反而导致无法访问了(因为只有nginx的80对外开放)

我查了一下是thinkphp6的Url.php文件if ($port && !in_array($port, [80, 443])) {
                $domain .= ':' . $port;
            }
这段代码的问题,改为 $domain = request()->host();就正常了,不管是反代访问,还是直接端口访问生成的地址都可用。
所以为什么不直接用 request()->host() 呢


最佳答案
评论( 相关
后面还有条评论,点击查看>>