5.0.24版本
路由自己概括为三种
配置文件(三种模式的区别无非就是配置上的区别) application/config.php
普通模式:
'url_route_on' => false, //开启路由设置
'url_route_must'=> false, //必须使用路由
混合模式(tp5.0.24默认)
'url_route_on' => true, //开启路由设置
'url_route_must'=> false, //必须使用路由
强制模式 (项目推荐完全强制,没定义的路由你完全访问不到)
'url_route_on' => true, //开启路由设置
'url_route_must'=> true, //必须使用路由
路由的注册
Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
//简化格式:
Route::get('路由表达式','路由地址','路由参数(数组)','变量规则(数组)');
Route::post('路由表达式','路由地址','路由参数(数组)','变量规则(数组)');
//get和post都可以
Route::any('路由表达式','路由地址','路由参数(数组)','变量规则(数组)');
案例:
Route::rule('login','home/login/login','GET',['ext'=>'html']);
访问:http://servername/index.php/login.html
路由到:http://servername/index.php/home/login/login
//路由变量
Route::rule('login/:id','home/login/login','GET',['ext'=>'html'],['id'=>'\d+']);
访问:http://servername/index.php/login/101.html
路由到:http://servername/index.php/home/login/login/id/101
Route::rule('login/:id/:name','home/login/login','GET',['ext'=>'html'],['id'=>'\d+','name'=>'[a-zA-Z]+']);
访问:http://servername/index.php/login/101/tom.html
路由到:http://servername/index.php/home/login/login/id/101/name/tom
路由的分组概念
Route::group(‘分组名称’, function(){
//单个路由的定义
});
组合变量
如果路由中的变量,不想使用 /:变量名 的方式定义,可以使用 <变量名> 组合变量。
Route::get('item-<name>-<id>','product/detail',[],['name'=>'\w+','id'=>'\d+']);
访问的时候就可以把斜杠换成-来访问,看起来就好像没有层级关系
TP中路由与伪静态(伪静态(让访问url看起来像是访问的静态html地址,实际上访问到的是php)
实现伪静态其实就是利用apache的url重写机制
步骤:
1.开启apache的重写模块
httpd.conf 搜索 rewite 把前面的注释给去掉
2.修改apache的主配置文件httpd.conf 搜 allowoverride 把后面的none 都改成 all
3.vhosts.conf 把想要修改的站点里面 allowoverride 后面如果是none 改成 all
最后修改.htaccess 文件
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
index.php 后面跟上?
1、隐藏入口文件(使用apache的url重写机制)
2、伪静态后缀 .html (框架默认可以加后缀)
3、路由注册(简化路由写法)
资源路由(就是一套增删改查自动给你弄好了)
Route::resource('goods', 'admin/goods');
域名路由(其实就是给某个模块绑定了一个子域名,通过这个子域名直接访问到该模块)
① 配置一个虚拟站点 比如 admin.tpshop.com 还是指向项目的public目录
②修改配置文件application/config.php
'url_domain_deploy' => true
③注册域名路由 application/route.php
\think\Route::domain('admin', 'admin');
来源:CSDN
作者:qq_35081380
链接:https://blog.csdn.net/qq_35081380/article/details/103619082