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

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

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

需要实现的效果:

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里面的值,最终效果如下:

分享给朋友:

相关文章

关于微信表情(emoji表情)入Mysql的解决方案(PHP版)

emoji是4个字节存储,而utf8_general_ci最大支持3字节,解决方案有两个:1、mysql库的由utf8改成utf8mb4;2、使用出入库编码转换,比如:base64编码、urlenco...

php json_decode转换为null的问题解决

在做某一程序的时候,前台组装的json数组,为了能传到后台,使用JSON.stringify将其转换成字符串后后端接收。但是接收后,死活转换不了数组,使用json_last_error()输出错误后,...

【转】Swoole和Workerman到底选谁?

【转】Swoole和Workerman到底选谁?

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

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

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

困扰了很久的PHP跨域问题

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

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

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

发表评论

访客

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