刚学的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');
在 ThinkPHP 8 中,如果你想要隐藏前台模块的名称(即 index 模块),而保留其他模块(如 personal)的名称,你可以通过自定义路由来实现。以下是具体的步骤和代码示例:
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 模块。
http://localhost/controller/action
对于用户管理后台,你需要访问:
http://localhost/personal/controller/action
4. 注意事项
确保你的 index 模块的控制器和方法名称与路由规则匹配。
如果你有其他的模块需要类似的处理,可以继续在路由配置中添加相应的规则。
通过以上设置,你就可以实现前台页面的 URL 地址不包含模块名称,而其他模块仍然包含模块名称的需求。
感谢大哥提拔。。。。
解释的特别详细到位。。。。傻子都能看懂。。。。
你是要加这个吧
Route::rule('/', 'index'); // 首页访问路由