thinkphp最簡單路由
一、總結
1、路由應用場景(前台要,后台不要):前台所有人都可以看,所以前台的話設置路由,后台的話並不是所有人都進去,所以不需要設置路由
2、模塊分離來實現路由場景應用:前后台模塊分離之后,就可以分別設置是否需要使用路由
3、模塊綁定來實現模塊分離:例如前台模塊綁定為index.php,后台模塊綁定為admin.php
4、隱藏入口文件:前台隱藏入口文件可以簡化path_info(url路徑長度),非常有必要
5、路由的設置(配置規則、鍵值對):路由的設置只需要的路由的那個配置文件中加路由規則,很簡單,就是鍵值對的形式Route::rule('test','index/index/test');
6、路由的三種模式:路由的三種模式就是路由和path_info的三種混合方式
注意點:
1、路由的另外作用():有利於搜索引擎優化
2、隱藏入口文件操作:隱藏入口文件是需要修改apach的配置的
3、隱藏入口文件的原理:隱藏入口文件的原理是正則替換,也就是訪問沒有文件的時候加上入口文件RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
4、路由范圍:路由只針對應用,不針對模塊,因此路由的設置也是針對應用下面的所有模塊。
5、路由和path_info:要注意好像設置路由之后,就不能使用pathinfo訪問了
延伸:
后面要基於我的項目寫一個 路由實例 的文章出來
二、php動態路由注冊
1、路由作用:
1、簡化URL地址,方便大家記憶
2、有利於搜索引擎優化
2、入口文件:
1、前后台分離
a、在網站public目錄下(C:\AppServ\www\tp5\public) 新建admin.php
b、打開admin.php
<?php
// 定義應用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載框架引導文件
require __DIR__ . '/../thinkphp/start.php';
2、綁定模塊
1、實現功能
index.php 這個入口文件 只能去前台模塊
admin.php 這個入口文件 只能去后台模塊 #建議后台的入口文件稍微復雜一些
2、如何實現
在入口文件中
define("BIND_MODULE",'index'); # 綁定前台模塊
define("BIND_MODULE",'admin'); # 綁定后台模塊
3、URL地址發生改變
1、入口綁定之前
http://www.tp.com/admin.php/模塊/控制器/方法
2、入口綁定之后
http://www.tp.com/admin.php/控制器/方法
3、隱藏入口文件
1、開啟apache的重寫(C:\AppServ\Apache24\conf\httpd.conf)
# 把注釋開啟
LoadModule rewrite_module modules/mod_rewrite.so
2、設置訪問權限 (C:\AppServ\Apache24\conf\extra\httpd-vhosts.conf)
<VirtualHost *:80>
DocumentRoot "C:\AppServ\www\tp5\public"
ServerName www.tp5.com
<Directory "C:\AppServ\www\tp5\public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
3、入口文件,在網站public目錄下新建.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]
</IfModule>
4、重啟服務
5、url地址變化
1、隱藏之前
http://www.tp.com/index.php/Index/test
2、隱藏之后
http://www.tp.com/Index/test
3、Tp5.0路由學習注意:
1、支持三種方式的URL解析規則
2、路由只針對應用,不針對模塊,因此路由的設置也是針對應用下面的所有模塊。
3、關閉后台模塊,在后台入口文件(C:\AppServ\www\tp5\public)
// 定義應用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 綁定后台
define('BIND_MODULE','admin');
// 加載框架引導文件
require __DIR__ . '/../thinkphp/start.php';
// 關閉admin模塊的路由
// 必須寫到 加載框架引導文件 之后否則報錯
\think\App::route(false);
4、路由模式
1、普通模式
a、定義
關閉路由,完全使用默認的 PATH_INFO 方式URL:
b、形式
http://www.tp.com/admin.php/index/index
c、如何設置
在application下面的config.php的配置文件中
// 是否開啟路由
'url_route_on' => false,
// 是否強制使用路由
'url_route_must' => false,
2、混合模式
a、定義:
開啟路由,並使用路由定義+默認 PATH_INFO 方式的混合
b、如何設置
// 是否開啟路由
'url_route_on' => true,
// 是否強制使用路由
'url_route_must' => false,
3、強制模式
1、定義:
開啟路由,並設置必須定義路由才能訪問
2、如何設置
// 是否開啟路由
'url_route_on' => true,
// 是否強制使用路由
'url_route_must' => true,
5、設置路由-動態單個注冊
0、設置路由格式
Route::rule('路由表達式','路由地址','請求類型','路由參數(數組)','變量規則(數組)')
1、設置路由文件
C:\AppServ\www\tp5\application\route.php
2、如何設置
// 引入系統類
use think\Route;
// 定義路由規則
// 設置路由之后,就不能使用pathinfo訪問了
// 注冊路由 訪問到Index模塊index控制器index方法
Route::rule('/','index/index/index');
// 注冊路由test 訪問到Index模塊index控制器test方法
Route::rule('test','index/index/test');
3、路由的形式
1、靜態地址路由
// 注冊路由test 訪問到Index模塊index控制器test方法
Route::rule('test','index/index/test');
1、路由作用:
1、簡化URL地址,方便大家記憶
2、有利於搜索引擎優化
2、入口文件:
1、前后台分離
a、在網站public目錄下(C:\AppServ\www\tp5\public) 新建admin.php
b、打開admin.php
<?php
// 定義應用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載框架引導文件
require __DIR__ . '/../thinkphp/start.php';
2、綁定模塊
1、實現功能
index.php 這個入口文件 只能去前台模塊
admin.php 這個入口文件 只能去后台模塊 #建議后台的入口文件稍微復雜一些
2、如何實現
在入口文件中
define("BIND_MODULE",'index'); # 綁定前台模塊
define("BIND_MODULE",'admin'); # 綁定后台模塊
3、URL地址發生改變
1、入口綁定之前
http://www.tp.com/admin.php/模塊/控制器/方法
2、入口綁定之后
http://www.tp.com/admin.php/控制器/方法
3、隱藏入口文件
1、開啟apache的重寫(C:\AppServ\Apache24\conf\httpd.conf)
# 把注釋開啟
LoadModule rewrite_module modules/mod_rewrite.so
2、設置訪問權限 (C:\AppServ\Apache24\conf\extra\httpd-vhosts.conf)
<VirtualHost *:80>
DocumentRoot "C:\AppServ\www\tp5\public"
ServerName www.tp5.com
<Directory "C:\AppServ\www\tp5\public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
3、入口文件,在網站public目錄下新建.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]
</IfModule>
4、重啟服務
5、url地址變化
1、隱藏之前
http://www.tp.com/index.php/Index/test
2、隱藏之后
http://www.tp.com/Index/test
3、Tp5.0路由學習注意:
1、支持三種方式的URL解析規則
2、路由只針對應用,不針對模塊,因此路由的設置也是針對應用下面的所有模塊。
3、關閉后台模塊,在后台入口文件(C:\AppServ\www\tp5\public)
// 定義應用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 綁定后台
define('BIND_MODULE','admin');
// 加載框架引導文件
require __DIR__ . '/../thinkphp/start.php';
// 關閉admin模塊的路由
// 必須寫到 加載框架引導文件 之后否則報錯
\think\App::route(false);
4、路由模式
1、普通模式
a、定義
關閉路由,完全使用默認的 PATH_INFO 方式URL:
b、形式
http://www.tp.com/admin.php/index/index
c、如何設置
在application下面的config.php的配置文件中
// 是否開啟路由
'url_route_on' => false,
// 是否強制使用路由
'url_route_must' => false,
2、混合模式
a、定義:
開啟路由,並使用路由定義+默認 PATH_INFO 方式的混合
b、如何設置
// 是否開啟路由
'url_route_on' => true,
// 是否強制使用路由
'url_route_must' => false,
3、強制模式
1、定義:
開啟路由,並設置必須定義路由才能訪問
2、如何設置
// 是否開啟路由
'url_route_on' => true,
// 是否強制使用路由
'url_route_must' => true,
5、設置路由-動態單個注冊
0、設置路由格式
Route::rule('路由表達式','路由地址','請求類型','路由參數(數組)','變量規則(數組)')
1、設置路由文件
C:\AppServ\www\tp5\application\route.php
2、如何設置
// 引入系統類
use think\Route;
// 定義路由規則
// 設置路由之后,就不能使用pathinfo訪問了
// 注冊路由 訪問到Index模塊index控制器index方法
Route::rule('/','index/index/index');
// 注冊路由test 訪問到Index模塊index控制器test方法
Route::rule('test','index/index/test');
3、路由的形式
1、靜態地址路由
// 注冊路由test 訪問到Index模塊index控制器test方法
Route::rule('test','index/index/test');