首页 新闻 会员 周边 捐助

ThinkPHP8路由 模块隐藏

0
[已解决问题] 解决于 2024-09-12 11:19

刚学的TP8
目前正在建设一个网站。
项目搭建 结构是。
application
----api (提供接口)
----index (网站前台页面)
----common (公共)
----personal (用户管理后台)

默认的情况下访问地址分别应该是
http://localhot/index.php/index/controller/action (网站前台)
http://localhot/index.php/personal/controller/action (用户管理后台)

我希望 网站前台页面的url地址 不包含模块名称,但是其他的模块还是继续包含模块名称。。
http://localhot/controller/action (网站前台)
http://localhot/personal/controller/action (用户管理后台)

请问各位大佬如何设置????

目前我在route 里面设置了 隐藏模块名称。。。但是这样 导致 personal模块也不行。
// 隐藏默认模块名
Route::bind('web');
Route::rule(':controller/:action','web/:controller/:action');

五百万的主页 五百万 | 初学一级 | 园豆:37
提问于:2024-09-04 17:10
< >
分享
最佳答案
0

在 ThinkPHP 8 中,如果你想要隐藏前台模块的名称(即 index 模块),而保留其他模块(如 personal)的名称,你可以通过自定义路由来实现。以下是具体的步骤和代码示例:

  1. 修改路由配置
    在 route 文件中,你可以使用 Route::group 来定义不同的路由规则。这样可以针对不同的模块设置不同的路由规则。

use think\facade\Route;

// 隐藏 index 模块名
Route::group('', function () {
Route::rule(':controller/:action', 'index/:controller/:action');
});

// 保留 personal 模块名
Route::group('personal', function () {
Route::rule(':controller/:action', 'personal/:controller/:action');
});
2. 解释代码
Route::group('', function () {...}):这个组定义了一个空前缀的路由组,所有的路由规则都将应用于根路径。这里我们定义了一个规则,匹配 :controller/:action 的请求,并将其路由到 index 模块。

Route::group('personal', function () {...}):这个组定义了一个以 personal 为前缀的路由组,所有的路由规则都将应用于 /personal 路径。这里我们定义了一个规则,匹配 :controller/:action 的请求,并将其路由到 personal 模块。

  1. 访问示例
    对于网站前台页面,你可以直接访问:

http://localhost/controller/action
对于用户管理后台,你需要访问:

http://localhost/personal/controller/action
4. 注意事项
确保你的 index 模块的控制器和方法名称与路由规则匹配。
如果你有其他的模块需要类似的处理,可以继续在路由配置中添加相应的规则。
通过以上设置,你就可以实现前台页面的 URL 地址不包含模块名称,而其他模块仍然包含模块名称的需求。

奖励园豆:5
Technologyforgood | 大侠五级 |园豆:7231 | 2024-09-06 07:46

感谢大哥提拔。。。。

解释的特别详细到位。。。。傻子都能看懂。。。。

五百万 | 园豆:37 (初学一级) | 2024-09-12 11:18
其他回答(1)
0

你是要加这个吧
Route::rule('/', 'index'); // 首页访问路由

www378660084 | 园豆:682 (小虾三级) | 2024-09-04 18:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册