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应用
],

 

你可能感兴趣的:(php,thinkphp,thinkphp,php,web)