TP5.0入口文件和路由模式
1、1、路由的作用
简化URL地址,方便大家记忆
有利于搜索引擎的优化

2、2、入口文件
1、前后台分离
在网站public目录下(根目录\public)新建admin.php
打开admin.php
<?php
// [ 应用入口文件 ]
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
2、绑定模块
实现功能
index.php 只能进前台模块
admin.php 只能进后台模块
如何实现
在入口文件中 define('BIND_MODULE','admin');后台模块 后台入口文件名复杂一些 防止别人进入
define('BIND_MODULE','index');前台模块
URL地址
绑定之前:http://www.tp5.net/index.php/模块/控制器/方法
绑定之后:http://www.tp5.net/index.php/控制器/方法
3、隐藏入口文件
开启apache重写(conf/httpd.conf)
LoadModule rewrite_module modules/mod_rewrite.so
设置访问权限( AllowOverride All (none改成all))
<VirtualHost *:80>
DocumentRoot "D:\phpStudy\WWW\tp5\public"
ServerName www.tp5.net
ServerAlias tp5.net
<Directory "D:\phpStudy\WWW\tp5\public">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
入口文件放一个.htaccess
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>
重启服务
URL地址
隐藏之前:http://www.tp5.net/index.php/模块/控制器/方法
隐藏之后:http://www.tp5.net/控制器/方法


3、3、tp5.0路由学习
1、支持三种路由规则
2、路由只针对应用,不针对模块,因此路由的设置也是针对应用下面的所有模块。
3、如果某些模块不想使用路由的话,关闭路由
在后台入口文件中增加关闭路由配置(必须写在 加载引导文件之后)
\think\App::route(false);

4、4、路由
1、普通模式
定义:关闭路由,完全使用默认的PATH_INFO方式URL
形式:http://www.tp5.net/index.php/模块/控制器/方法
如何设置:// 是否开启路由
'url_route_on' => false,
// 是否强制使用路由
'url_route_must' => false,
2、混合模式
定义:开启路由,并使用路由定义+默认PATH_INFO方式的混合
如何设置:// 是否开启路由
'url_route_on' => true,
// 是否强制使用路由
'url_route_must' => false,
3、强制模式
定义:开启路由,并设置必须定义路由才能访问
如何设置:// 是否开启路由
'url_route_on' => true,
// 是否强制使用路由
'url_route_must' => true,

5、5、设置路由-动态单个注册
设置路由文件(根目录\application\route.php)
如何设置: 设置路由之后就不能使用PATH_INFO形式访问
use think\Route;
Route::rule('/','index/index/index');
Route::rule('getconfig','index/index/getconfig');
路由的形式:
静态地址路由:Route::rule('getconfig','index/index/getconfig');
路由带参数:Route::rule('num/:id','index/index/num');
Route::rule('time/:year/:month','index/index/time');
//(两个参数,只要有一个没有写就会报错)
可选参数路由:Route::rule('time/:year/[:month]','index/index/time');
全动态路由:Route::rule(':a/:b','index/index/time');
完全匹配路由:Route::rule('test$','index/index/test');
//http://www.tp5.net/test 可以成功访问
//http://www.tp5.net/num/4 不能成功访问
额外带参数:Route::rule('test','index/index/test?status=1&app_id=5');
//用input()打印参数
请求类型:
TP中的请求类型:get,post,put,delete
Route::rule()默认支持所有请求类型
Route::rule('num','index/index/num','get');
Route::get('num','index/index/num'); // 定义GET请求路由规则
Route::post('new/:id','News/update'); // 定义POST请求路由规则
Route::put('new/:id','News/update'); // 定义PUT请求路由规则 Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
Route::rule('num','index/index/num','*');
Route::any('new/:id','News/read'); // 所有请求都支持的路由规则

6、6、设置路由-动态批量注册
基本格式:
Route::rule([
'路由规则1'=>'路由地址和参数',
'路由规则2'=>['路由地址和参数','匹配参数(数组)', '变量规则(数组)']
...
],'',
'请求类型','匹配参数(数组)','变量规则');
使用:
Route::rule([
'test'=>'index/index/test',
'num/:id'=>'index/index/num'
],'','get');
Route::get([
'test'=>'index/index/test',
'num/:id'=>'index/index/num'
]);

7、7、设置路由-配置文件批量注册
return [
'new/:id' => 'News/read',
'blog/:id' => ['Blog/update',['method' => 'post|put'], ['id' => '\d+']],
];

8、8、变量规则
Route::rule('num','index/index/num',get',[],['id'=>'\d+']);

9、9、路由参数
ext 路由后缀 method 访问方法
Route::rule('num','index/index/num',get',[‘method'=>'get','ext'=>'html'],['id'=>'\d+']);

10、10、资源路由
声明:Route::resource('blog','index/blog');
会自动注册七个路由规则

11、11、快捷路由
声明:// 给User控制器设置快捷路由
Route::controller('user','index/User');
使用:get http://localhost/user/info 找控制器中的getinfo方法

12、12、生成url地址
系统类
Url::build('地址表达式',['参数'],['URL后缀'],['域名'])
系统方法
url('地址表达式',['参数'],['URL后缀'],['域名'])
