当前位置:首页 > 后端 > 正文内容

ThinkPHP6多应用下配置短路由 - TP6路由

Z先生3年前 (2022-03-13)后端646

需要实现的效果:

http://xx.com/u/RkdJ80      =>     http://xx.com/home/url/url/index

实现步骤

1. 设置tp6隐藏网址的index.php

具体参考官方文档:https://www.kancloud.cn/manual/thinkphp6_0/1037488

2. 然后 config\app.php 设置,开启路由,设置默认路由

    'with_route'       => true,
    'default_app'      => 'home',

3. 写好请求方法,确定正常能访问到

子目录模式:app\home\controller\url\UrlController.php文件下,index方法,确定完整地址能访问:http://xx.com/home/url/url/index

4. 设置应用下路由

设置home应用下的路由定义app\home\route\route.php(目录名固定,文件名随意)下:

<?php

use think\facade\Route;

Route::get('/', 'index.Index/index');

// TODO 短网址实现
// http://demo.demo/u/Udos81d

Route::get('u/:hash',       'url.url/index');
Route::get('u',       'url.url/index');


// controller 二级目录,动态路由

Route::get(':dir/:class/:fun', ':dir.:class/:fun');

Route::post(':dir/:class/:fun', ':dir.:class/:fun');

根据实际情况修改:hash:hash为方法中param取值的key

5. 修改入口文件

原入口文件:public/index.php,内容为

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2019 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

// [ 应用入口文件 ]
namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new App())->http;

$response = $http->run();

$response->send();

$http->end($response);

修改为:

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2019 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

// [ 应用入口文件 ]
namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new App())->http;


// 短网址修改by OneNine
$uri = trim($_SERVER['REQUEST_URI'], '/');

$uri_arr = explode('/', $uri);

$default_app = "home";


// TODO 新加入应用,需要在这里再次标识
$other_app = ['adm', 'payment'];

if (in_array($uri_arr[0], $other_app)) {
    $response = $http->run();
} else {
    $response = $http->name($default_app)->run();
}

$response->send();

$http->end($response);

注意:
根据实际情况修改以上:$default_app$other_app里面的值,最终效果如下:

分享给朋友:

相关文章

php获取文件mime的方法,相对完整,并且已经测试

已经经过测试也相对完整,优先自带类和方法,如果自带类或者方法没有开启的情况下,通过文件扩展名实现,文件扩展名关联了176种如果实在没有开启相关组件也没有匹配到,那么就返回:application/oc...

困扰了很久的PHP跨域问题

其实这个问题一直是不存在的,只是自己因为各种配置吧,导致了这个问题一直没有解决。现在就解决思路提供如下: 需要两步操作一、修改Nignx配置文件一般在宝塔面板伪静态中设置示例代码: locatio...

thinkphp6模型中联合主键、中间表调用的写法

前言Thinkphp框架是不错,但是一些特殊用法几乎找不到文档。模型就新手来说感觉会很麻烦,但是实际上习惯之后会很方便,比如入库和出库的自动格式化,再比如安全的入库。而且模型会让你养成良好的开发习惯,...

Composer常见故障处理

Segmentation fault (core dumped)错误错误详情Composer在自升级和安装包时均报:Segmentation fault (core dumped)错误 检查分析运行...

thinkphp6批量软删除

关于thinkphp软删除的理解软删除核心逻辑数据库设置软删除字段,并将类型定义为int(10)软删除核心代码    // 自动时间戳类型未int...

php之redis乐观锁,秒杀抢购锁库存应用。

直接上代码<?php // 连接Redis $redis = new Redis(); $redis->connect('127.0....

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。