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

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

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

需要实现的效果:

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将图片自动缩放成指定大小:autoCropImage,含nginx伪静态

autoCropImage自己一直在用,并且加入了webp格式转换具体说明和介绍如下:autoCropImage - 图片自动缩放程序将图片自动缩放成指定大小,减少图片体积,从而加快下载速度,降低下载...

Composer的初步使用以及Composer切换国内源(阿里云)

Composer安装(Windows系统)下载:https://getcomposer.org/Composer-Setup.exe一步步安装即可。需要注意的是你需要开启 openssl 配置,我们打...

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

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

Composer常见故障处理

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

thinkphp6批量软删除

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

发表评论

访客

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