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

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

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

需要实现的效果:

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年龄计算

通过出生日期,再传入指定日期计算年龄,不传入则计算到今天的时间。        /**  * 计...

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

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

【转】Swoole和Workerman到底选谁?

【转】Swoole和Workerman到底选谁?

Swoole:面向生产环境的 PHP 异步网络通信引擎       使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTT...

PHP将图片自动缩放成指定大小:autoCropImage,含nginx伪静态

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

php array_column函数封装

array_column函数只支持php5.5.0以上版本,所以这里要封装下,这样可以兼容用法if (!function_exists("array_column"))&...

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

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

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。
请先 登录 再评论,若不是会员请先 注册