如何修改thinkPHP路由规则,使U方法自动生成伪静态链接

简介: 效果假设网站域名是A.com,那么可以:通过A.com/xwzx.html访问A.com/Home/News/index.html?id=xwzx或者通过A.

效果

假设网站域名是A.com,那么可以:
通过
A.com/xwzx.html
访问
A.com/Home/News/index.html?id=xwzx
或者通过
A.com/xwzx_1.html
访问
A.com/Home/News/index.html?id=xwzx&p=1

最关键的是:

使用
U('Home/News/index', array('id'=>xwzx))
生成
A.com/xwzx.html链接
或者使用
U('Home/News/index', array('id'=>xwzx,'p'=>1))
生成
A.com/xwzx_1.html链接
以此类推

目的

其实ThinkPHP3.2.3的路由部分使用场景并不多,究其原因是因为路由规则可以设置并正常访问,但是却没有自动生成路由的方法。比如说你配置完一个路由规则A.com/xwzx.html是可以正常访问的,却发现有大量的链接U('Home/News/index', array('id'=>xwzx))需要修改为/xwzx.html,使用的U方法并不能自动完成转化。
所以我们的目的就是,让U方法可以根据路由规则反推出伪静态的链接。这样做有什么好处呢?

  1. 如果有老项目需要配置全站的伪静态规则,这样做可以减少工作量,一切只需要配置即可。
  2. 在需要发起支付的页面,通常会带多个参数,这样就不利于我们配置支付接口的发起地址,此时用这个方法可以把多个参数合并到同一段URL中。更多支付接口配置内容请参考PHP支付接口教程,详解微信支付(一)
  3. 不需要做项目之前就事先处理伪静态页面,只需要正常写U方法即可,加快开发速度。

思路

修改ThinkPHP底层的U方法,当路由规则开启时,通过规则反推出伪静态链接。

配置规则同ThinkPHP官方的文档,Application/Common/Conf/config.php配置如下:

'URL_ROUTER_ON' => true, // 开启URL路由
'URL_ROUTE_RULES' => array(
//'CGIIP/:id/:p'=>'Home/News/index',
'/^([A-Za-z0-9]+)$/'=>'Home/News/index?id=:1',
'/^([A-Za-z0-9]+)_(d+)$/'=>'Home/News/index?id=:1&p=:2',
'4O4'=>'Admin/Index/notFound',
'test'=>'Home/Index/test',
), // 路由规则

修改ThinkPHP/Common/functions.php里面的U方法:

<script src="https://gist.coding.net/u/fourn/60d20945c81645b3b826330896c0fa93.js"></script>

完整functions.php文件代码在Coding中:

代码放到U方法中,“if($suffix){”这行代码之前。
注意这些都是针对ThinkPHP3.2.3版本的哦

目录
相关文章
|
7月前
|
数据安全/隐私保护
fastadmin中写接口是时Validate规则验证自定义如何用
fastadmin中写接口是时Validate规则验证自定义如何用
|
3月前
|
安全 iOS开发 开发者
mPaaS问题之混淆按照文档配置报错如何解决
mPaaS配置是指在mPaaS平台上对移动应用进行的各项设置,以支持应用的定制化和优化运行;本合集将提供mPaaS配置的操作指南和最佳实践,助力开发者高效管理和调整移动应用的设置。
42 6
|
5月前
|
前端开发 小程序 PHP
laravel5.8(四)引入自定义常量文件及公共函数文件
开发过程中,我们一般会用到一些不会改变,或者改变不是很频繁的值,这样的值我们一般将他们定义成常量。 比如网站根目录,或者分页数,或者域名等等。 那我们如何在laravel5.8中引入自定义的常量文件及公共的函数文件呢。 大概有两种方式: 1:框架目录下引入(不推荐) 在框架目录vendor下新建常量文件const.php,以及公共函数文件function.php 在autoload.php文件中引入。 这种方法是可以的,但是不推荐,框架目录下最好都是框架自己的那些文件,正常来说,框架的文件我们在开发过程中,git是不会进行托管的。 2:在app目录下引入 在bootstrap目录下新建常量文件
29 0
|
文件存储
Yii2.0框架提供了内置的文件访问组件,可以通过配置只允许访问指定的目录,防止非法文件的包含。这个如何使用?
Yii2.0框架提供了内置的文件访问组件,可以通过配置只允许访问指定的目录,防止非法文件的包含。这个如何使用?
114 0
|
存储 前端开发 编译器
TP5.1自定义命名空间使用命令行添加文件(修改源码)
TP5.1自定义命名空间使用命令行添加文件(修改源码)
98 0
TP5.1自定义命名空间使用命令行添加文件(修改源码)
08配置基础路径 同时导出一个函数和一个变量 封装微信请求Api
08配置基础路径 同时导出一个函数和一个变量 封装微信请求Api
【Lua篇】静态代码扫描分析(四)规则检查
通过前面三篇文章已经初步实现了将Lua源代码文件读取解析成语法树,现在就可以通过得到的语法树进行指定规则的代码扫描检查。下图简单列举了一下单个Lua文件内部的语法关系情况(注意并非真正的类图,也没有列举完全部的节点类型)。
431 0
【Lua篇】静态代码扫描分析(四)规则检查
|
监控 安全 Android开发
【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )
【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )
430 0