top-think / think-multi-app

thinkphp6 multi app support

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

多应用多入口时,非index.php 后 的其他应用都被解析为admin 应用的问题

yangweijie opened this issue · comments

commented

image
admin 换了 default_controller_layer , 应用为 user,但是解析到admin 文件的admin 了

如果不是index.php的话 入口文件名就是应用名

commented

admin.php/user来访问user应用 不觉得奇怪么,不同业务分组你要admin.php入口干嘛。每个应用可以有多个入口,因为你在入口文件可以绑定应用。如果你的部署策略和系统默认规则不一致,那么你可以自己扩展一个多应用插件来满足

commented

每个应用 有前台 和后台 之分 对于url 来说 入口后面第一个是应用 很符合习惯,至于分index 入口 和admin 入口 只是为了区分前后台访问。还有作为一个平台来说如果应用 可以由第三方提交,那么第三方应用是没有public的 写入权限的。安好了url能访问到 卸载了 访问不到,不需要安装 写入一个入口,卸载了再去删除一个入口。 哪怕不走入口动态添加域名路由都比强制每个应用 都需要一个独立入口来的强。

@liu21st
#14 admin.php绑定入口文件生成的url都有问题 都会带admin

image

@liu21st
#14 admin.php绑定入口文件生成的url都有问题 都会带admin

image
多应用模式下,url 为 完整时(三级),判定应用名与文件名是否匹配,不区域切 index.php ,这样就可以实现绑定时还能访问其他应用。ThinkAdmin 的临时方案,也希望 tp 官方给出兼容。

image

@liu21st
#14 admin.php绑定入口文件生成的url都有问题 都会带admin

image
多应用模式下,url 为 完整时(三级),判定应用名与文件名是否匹配,不区域切 index.php ,这样就可以实现绑定时还能访问其他应用。ThinkAdmin 的临时方案,也希望 tp 官方给出兼容。

        /*=====- 多应用绑定 URL 生成处理 -=====*/
        $app = $this->app->http->getName();
        if ($this->app->http->isBind()) {
            if (preg_match("#^{$app}({$depr}|\.|$)#i", $url)) {
                $url = trim(substr($url, strlen($app)), $depr);
            } elseif (substr_count($url, $depr) >= 2) {
                $file = 'index.php';
            }
        }