多应用多入口时,非index.php 后 的其他应用都被解析为admin 应用的问题
yangweijie opened this issue · comments
如果不是index.php的话 入口文件名就是应用名
不是根据入口来决定应用名的啊,比如海豚php的结构是 admin.php 访问的是 默认index应用的admin 控制器分层的index 控制器 admin.php/user/index 表示user 应用的index操作照你的说法多应用 只能每个应用一个入口了, 这样太麻烦了,不同应用只是不同业务分组而已。
…------------------ 原始邮件 ------------------
发件人: "ThinkPHP"<notifications@github.com>;
发送时间: 2020年4月6日(星期一) 下午3:45
收件人: "top-think/think-multi-app"<think-multi-app@noreply.github.com>;
抄送: "杨维杰"<917647288@qq.com>; "Author"<author@noreply.github.com>;
主题: Re: [top-think/think-multi-app] 多应用多入口时,非index.php 后 的其他应用都被解析为admin 应用的问题 (#18)
如果不是index.php的话 入口文件名就是应用名
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
admin.php/user来访问user应用 不觉得奇怪么,不同业务分组你要admin.php入口干嘛。每个应用可以有多个入口,因为你在入口文件可以绑定应用。如果你的部署策略和系统默认规则不一致,那么你可以自己扩展一个多应用插件来满足
每个应用 有前台 和后台 之分 对于url 来说 入口后面第一个是应用 很符合习惯,至于分index 入口 和admin 入口 只是为了区分前后台访问。还有作为一个平台来说如果应用 可以由第三方提交,那么第三方应用是没有public的 写入权限的。安好了url能访问到 卸载了 访问不到,不需要安装 写入一个入口,卸载了再去删除一个入口。 哪怕不走入口动态添加域名路由都比强制每个应用 都需要一个独立入口来的强。
多应用模式下,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';
}
}