• URL 路由


    一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系。 URL 中的每一段通常遵循下面的规则:

    example.com/class/function/id/
    

    但是有时候,你可能想改变这种映射关系,调用一个不同的类和方法,而不是 URL 中对应的那样。

    URL 路由的作用就是对URL进行重定向 —— 也就是,实现对URL 的定制!

    CI中,定义路由规则是在 application/config/routes.php 文件中,在这个文件中你会 发现一个名为 $route 的数组,利用它你可以设置你自己的路由规则。在路由规则中你可以使用通配符或正则表达式。

    1、通配符

    一个典型的使用通配符的路由规则如下:

    $route['product/:num'] = 'catalog/product_lookup';  // 如果 URL 的第一段是字符串 "product" ,第二段是个数字,那么, 将调用 "catalog" 类的 "product_lookup" 方法。
    

    在一个路由规则中,数组的键表示要匹配的 URI而数组的值表示要重定向的位置

    (:num) 匹配只含有数字的一段。 (:any) 匹配含有任意字符的一段。(除了 '/' 字符,因为它是段与段之间的分隔符)

    (1)通配符实际上是正则表达式的别名,:any 会被转换为 [^/]+:num 会被转换为 [0-9]+

    (2)路由规则将按照它们定义的顺序执行,前面的规则优先级高于后面的规则。

    (3)路由规则并不是过滤器!设置一个这样的路由:'foo/bar/(:num)' , Foo 控制器的 bar 方法还是有可能会通过一个非数字的参数被调用 (如果这个路由也是合法的话)。

     

    2、使用正则或者回调函数的形式来定义路由规则

    $route['products/([a-z]+)/(d+)'] = '$1/id_$2';
    $route['login/(.+)'] = 'auth/login/$1';

    $route['products/([a-zA-Z]+)/edit/(d+)'] = function ($product_type, $id)
    {
        return 'catalog/product_edit/' . strtolower($product_type) . '/' . $id;
    };

    3、CI中有三个保留路由规则。保留的路由规则必须位于任何一般的通配符或正则路由的前面。

    
    

     

  • 相关阅读:
    Oracle 分析函数
    Oracle 增加修改删除字段
    Oracle 重置序列
    End2EndIT
    Hyperledger Fabric SDK use case 1
    云计算中8项核心技术
    Cloud
    JVM Guide
    微信公众平台PHP开发
    在Linux系统环境下修改MySQL的root密码
  • 原文地址:https://www.cnblogs.com/bravehunter/p/5650091.html
Copyright © 2020-2023  润新知