当前位置:网站首页>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

  1. The routing rule is that we should URL Rules shown in , The following element values are actual URL Address and parameters
  2. In the routing rule, if : start , Represents a dynamic variable , Otherwise, it is a static address
  3. Format 2 The additional parameters of can be passed into array or string
  4. Routing rules support numerical constraint definitions of variables , for example :’product/:id\d’=>’Products/Show’
  5. Non numeric variables of routing rules support exclusion , for example ‘news/:cate^add|edit|delete’=>’News/category’
  6. Routing rules support complete matching definitions , for example :’product/:id\d$’=>’Products/Show’
  7. The static address part of the routing rule is not case sensitive
  8. If you want to reference dynamic variables in the external address , use :1、:2 The way
  9. 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

原网站

版权声明
本文为[Full stack programmer webmaster]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071406056672.html