tp5.0路由的学习

╄→гoц情女王★ 提交于 2019-12-20 04:11:02

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');

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!