thinkphp6多应用模式下访问路由显示路由不匹配的解决方法

各位客官,欢迎光临小弟网站:maliweb.top

 

thinkphp6多应用模式下访问路由显示路由不匹配的解决方法:


问题描述:

[0]RouteNotFoundException in Route.php line 799
当前访问路由未定义或不匹配
    if (false === $result && !empty($this->cross)) {
        // 检测跨域路由
        $result = $this->cross->check($this->request, $url, $completeMatch);
    }
    if (false !== $result) {
        return $result;
    } elseif ($this->config['url_route_must']) {
        throw new RouteNotFoundException();
    }
    return $this->url($url);
}
/**
 * 获取当前请求URL的pathinfo信息(不含URL后缀)
 * @access protected
 * @return string

解决方法:

(1)方法一:

在public目录下,复制index.php文件,针对每一个应用分别新建文件:例如:
现有admin应用,新建一个admin.php文件,复制index.php的内容然后修改其中的

$response = $http->name('admin')->run();
name 对应你的应用名称

然后访问的时候,把把以前的index.php换成对用应用的文件,例如:
以前访问默认应用的路径为

域名/index.php/index

访问其他应用的路径,比如上面的admin应用为

域名/admin.php/idnex  

(2)方法二:
自动多应用模式下,支持应用的别名映射,例如:

'app_map' => [
    'think'  =>  'admin',  // 把admin应用映射为think
],

应用映射后,原来的应用名将不能被访问,例如上面的admin应用不能直接访问,只能通过think应用访问。

应用映射支持泛解析,例如:

'app_map' => [
    'think' =>  'admin',  
    'home'  =>  'index',  
    '*'     =>  'index',  
],

表示如果URL访问的应用不在当前设置的映射里面,则自动映射为index应用。

如果要使用composer加载应用,需要设置

'app_map'    =>    [
    'think' => function($app) {
        $app->http->path('path/to/composer/app');
    },
],

域名绑定应用
如果你的多应用使用多个子域名或者独立域名访问,你可以在config/app.php配置文件中定义域名和应用的绑定。

'domain_bind' => [
    'blog'        =>  'blog',  //  blog子域名绑定到blog应用
    'shop.tp.com' =>  'shop',  //  完整域名绑定
    '*'           =>  'home', // 二级泛域名绑定到home应用
],

 

ThinkPHP 8的多应用模式中配置独立的路由文件,你需要按照以下步骤操作: 1. 在应用目录下创建独立的路由目录和文件,例如在`application`目录下创建`admin`应用目录,然后在`admin`目录下创建`route`目录,并在该目录下创建`route.php`文件作为路由定义文件。 2. 在应用的入口文件中,需要加载对应的应用并指定路由文件。可以在入口文件中设置应用变量和路由定义文件,如: ```php // 入口文件示例 defined('APP_PATH') or define('APP_PATH', dirname(__DIR__) . DIRECTORY_SEPARATOR . 'application'); defined('ROUTE_PATH') or define('ROUTE_PATH', APP_PATH . '/admin/route/route.php'); (new \think\App())->initialize(); ``` 3. 在入口文件中,通过ThinkPHP的实例化过程,加载应用对应的路由文件。可以通过设置应用的`route_file`配置参数来指定当前应用使用的路由文件。例如: ```php $app = (new \think\App())->routeClass('\app\index\Route'); $app->routeFile(ROUTE_PATH); ``` 4. 在应用的路由文件`route.php`中,定义具体的路由规则。例如: ```php use think\facade\Route; Route::get('admin/home', 'index/Home/index'); Route::post('admin/login', 'index/Home/login'); // ... 其他路由定义 ... ``` 确保路由文件中的控制器命名空间与实际的应用控制器目录结构相匹配。完成以上步骤后,每个应用就可以拥有自己独立的路由文件,实现多应用模式下的路由管理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值