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

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

作者: fourn熊能 | 来源:发表于2017-08-17 15:57 被阅读55次

    效果

    假设网站域名是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版本的哦

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/zxcnrxtx.html