当前位置:网站首页>Introduction to ThinkPHP URL routing
Introduction to ThinkPHP URL routing
2022-07-07 16:21:00 【Full stack programmer webmaster】
To put it simply ,URL Routing allows you to customize what you need under certain rules URL Looks like , To beautify URL , Improve user experience , It is also beneficial to the purpose of search engine collection .
Example
The original URL by :
http://www.5idev.com/index.php/Products/Show/category/5/id/123
The URL The original intention of is to show 5 In the classification id by 123 Products . after URL After route rewriting URL It can be for :
http://www.5idev.com/index.php/product/5/123
If Use .htaccess Of documents Rewrite The rules hide the entry file , The top URL It can be further simplified to :
http://www.5idev.com/product/5/123
This URL The address is relatively simple and easy to look .
Tips : Use Apache Of URL Rewrite Rules can also be achieved URL Customized functions , It's not going to unfold here , For those interested, please refer to Apache Rewrite Related articles .
ThinkPHP URL Routing configuration
stay ThinkPHP To be used in URL Routing functions , The following configuration is required :
stay Project configuration file Conf/config.php Inside, the routing function is enabled ( Set to true):
'URL_ROUTER_ON' => true,
Routing rule definition
And 2.x Different versions ,3.0 Routing rules are defined in the project configuration file config.php Inside , The format is array , The specific definition rules are divided into rule route and regular route . The syntax of rule routing is as follows :
Format 1:' Routing rules '=>'[ grouping / modular / operation ]? Extra parameters 1= value 1& Extra parameters 2= value 2...'
Format 2:' Routing rules '=>array('[ grouping / modular / operation ]',' Extra parameters 1= value 1& Extra parameters 2= value 2...')
Format 3:' Routing rules '=>' External address '
Format 4:' Routing rules '=>array(' External address ',' Redirection code ')
Syntax description
- The routing rule is that we should URL Rules shown in , The following element values are actual URL Address and parameters
- In the routing rule, if : start , Represents a dynamic variable , Otherwise, it is a static address
- Format 2 The additional parameters of can be passed into array or string
- Routing rules support numerical constraint definitions of variables , for example :’product/:id\d’=>’Products/Show’
- Non numeric variables of routing rules support exclusion , for example ‘news/:cate^add|edit|delete’=>’News/category’
- Routing rules support complete matching definitions , for example :’product/:id\d$’=>’Products/Show’
- The static address part of the routing rule is not case sensitive
- If you want to reference dynamic variables in the external address , use :1、:2 The way
- Regular routing can support Full dynamic and dynamic static combination definition , for example ‘:user/blog/:id’=>’Home/Blog/user’
These rules and grammatical descriptions are rather obscure , The following will be examples to compare in order to understand the above routing rules and syntax instructions .
If the routing enable function is defined in the configuration file , The system is executing Dispatch When parsing , Will judge the present URL Whether there is a defined route name , If there is, it will follow the defined routing rules URL analysis .
ThinkPHP URL Routing instance
Take the example at the beginning of this article , See how the route is defined . In the project profile Conf/config.php The following rules are defined in :
// Route definition
'URL_ROUTE_RULES'=> array(
'product/:category\d/:id\d'=>'Products/Show', // Rule routing
),
When we visit the following address :
http://www.5idev.com/index.php/product/5/123
The address will be resolved to Products Modular Show operation , And pass in get Parameters category=5&id=123.
If there are additional fixed parameters , Such as status=1, You can define routes :
'product/:category\d/:id\d'=>'Products/Show?status=1', // Rule routing
That is, match the following URL Address :
http://www.5idev.com/index.php/product/5/123/1
The above is in the format 1 To define the route , With additional parameters , It can be converted to 2 Define... Formats :
'product/:category\d/:id\d'=>array('Products/Show','status=1')
In the above routing rules \d Indicates that only numbers are matched , When this constraint is not applied , Then all characters can be matched , This is also the default . If you want to strictly agree on the format of the incoming parameters , Please use Regular route definition rules .
Routing format : External address
For routing format 3 And format 4, The matching route format is detected , Then jump to the external address , The difference is format 4 There is redirection code , Such as 301 Represents a permanent redirect .
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/113177.html Link to the original text :https://javaforall.cn
边栏推荐
- PHP has its own filtering and escape functions
- 95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
- ThinkPHP URL 路由简介
- Laravel post shows an exception when submitting data
- Notification uses full resolution
- Markdown formula editing tutorial
- Statistical learning method -- perceptron
- Performance comparison of tidb for PostgreSQL and yugabytedb on sysbench
- thinkphp3.2.3中设置路由,优化url
- 分步式监控平台zabbix
猜你喜欢
删除 console 语句引发的惨案
Leetcode-231-2的幂
Continuous creation depends on it!
Apache Doris just "graduated": why should we pay attention to this kind of SQL data warehouse?
Performance comparison of tidb for PostgreSQL and yugabytedb on sysbench
Sysom case analysis: where is the missing memory| Dragon lizard Technology
Strengthen real-time data management, and the British software helps the security construction of the medical insurance platform
Talk about the cloud deployment of local projects created by SAP IRPA studio
Description of vs common shortcut keys
pycharm 终端部启用虚拟环境
随机推荐
Use moviepy Editor clips videos and intercepts video clips in batches
leetcode 241. Different Ways to Add Parentheses 为运算表达式设计优先级(中等)
目标跟踪常见训练数据集格式
Three. JS introductory learning notes 19: how to import FBX static model
修改配置文件后tidb无法启动
招标公告:福建省农村信用社联合社数据库审计系统采购项目(重新招标)
logback.xml配置不同级别日志,设置彩色输出
TiDB For PostgreSQL和YugabyteDB在Sysbench上的性能对比
10 schemes to ensure interface data security
SPI master rx time out中断
平衡二叉树(AVL)
prometheus api删除某个指定job的所有数据
47_Opencv中的轮廓查找 cv::findContours()
JS modularization
How does geojson data merge the boundaries of regions?
PHP中exit,exit(0),exit(1),exit(‘0’),exit(‘1’),die,return的区别
95. (cesium chapter) cesium dynamic monomer-3d building (building)
hellogolang
Shader_ Animation sequence frame
iptables只允许指定ip地址访问指定端口