<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 路由定義 [上一頁](# "上一頁")[下一頁](# "下一頁") ### 啟用路由 要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情況下不支持路由功能),并且在應用(或者模塊)配置文件中開啟路由: ~~~ // 開啟路由 'URL_ROUTER_ON' => true, ~~~ > 3.2的路由功能是針對模塊設置的,所以URL中的模塊名不能被路由,路由定義也通常是放在模塊配置文件中。 然后就是配置路由規則了,在模塊的配置文件中使用**URL_ROUTE_RULES**參數進行配置,配置格式是一個數組,每個元素都代表一個路由規則,例如: ~~~ 'URL_ROUTE_RULES'=>array( 'news/:year/:month/:day' => array('News/archive', 'status=1'), 'news/:id' => 'News/read', 'news/read/:id' => '/news/:1', ), ~~~ 系統會按定義的順序依次匹配路由規則,一旦匹配到的話,就會定位到路由定義中的控制器和操作方法去執行(可以傳入其他的參數),并且后面的規則不會繼續匹配。 ### 路由定義 路由規則的定義格式為: **'路由表達式'=>'路由地址和傳入參數'** 或者:**array('路由表達式','路由地址','傳入參數')** ##### 路由表達式 路由表達式包括規則路由和正則路由的定義表達式,只能使用字符串。 | 表達式 | 示例 | |-----|-----| | 正則表達式 | /^blog\/(\d+)$/ | | 規則表達式 | blog/:id | > 詳細的規則路由和正則路由表達式的定義方法參考后面的章節。 ##### 路由地址 路由地址(可以支持傳入額外參數)表示前面的路由表達式需要路由到的地址(包括內部地址和外部地址),并且允許隱式傳入URL里面沒有的一些參數,這里允許使用字符串或者數組方式定義,特殊情況下還可以采用閉包函數定義路由功能,支持下面6種方式定義: | 定義方式 | 定義格式 | |-----|-----| | 方式1:路由到內部地址(字符串) | '[分組/模塊/操作]?額外參數1=值1&額外參數2=值2...' | | 方式2:路由到內部地址(數組)參數采用字符串方式 | array('[分組/模塊/操作]','額外參數1=值1&額外參數2=值2...') | | 方式3:路由到內部地址(數組)參數采用數組方式 | array('[分組/模塊/操作]',array('額外參數1'=>'值1','額外參數2'=>'值2'...)[,路由參數]) | | 方式4:路由到外部地址(字符串)301重定向 | '外部地址' | | 方式5:路由到外部地址(數組)可以指定重定向代碼 | array('外部地址','重定向代碼'[,路由參數]) | | 方式6:閉包函數 | function($name){ echo 'Hello,'.$name;} | 如果路由地址以“/”或者“http”開頭則會認為是一個重定向地址或者外部地址,例如: ~~~ 'blog/:id'=>'/blog/read/id/:1' ~~~ 和 ~~~ 'blog/:id'=>'blog/read' ~~~ 雖然都是路由到同一個地址,但是前者采用的是301重定向的方式路由跳轉,這種方式的好處是URL可以比較隨意(包括可以在URL里面傳入更多的非標準格式的參數),而后者只是支持模塊和操作地址。 舉個例子,如果我們希望 `avatar/123` 重定向到 `/member/avatar/id/123_small` 的話,只能使用: ~~~ 'avatar/:id'=>'/member/avatar/id/:1_small' ~~~ 路由地址采用重定向地址的話,如果要引用動態變量,也是采用 `:1、:2` 的方式。 采用重定向到外部地址通常對網站改版后的URL遷移過程非常有用,例如: ~~~ 'blog/:id'=>'http://blog.thinkphp.cn/read/:1' ~~~ 表示當前網站(可能是http://thinkphp.cn)的 `blog/123` 地址會直接重定向到 `http://blog.thinkphp.cn/read/123`。 默認情況下,外部地址的重定向采用301重定向,如果希望采用其它的,可以使用: ~~~ 'blog/:id'=>array('http://blog.thinkphp.cn/read/:1',302); ~~~ 在路由跳轉的時候支持額外傳入參數對(額外參數指的是不在URL里面的參數,隱式傳入需要的操作中,有時候能夠起到一定的安全防護作用,后面我們會提到),支持`額外參數1=值1&額外參數2=值2` 或者 `array('額外參數1'=>'值1','額外參數2'=>'值2'...)` 這樣的寫法,可以參考不同的定義方式選擇。例如: ~~~ 'blog/:id'=>'blog/read?status=1&app_id=5', 'blog/:id'=>array('blog/read?status=1&app_id=5'), 'blog/:id'=>array('blog/read','status=1&app_id=5'), 'blog/:id'=>array('blog/read',array('status'=>1,'app_id'=>5)), ~~~ 上面的路由規則定義中額外參數的傳值方式都是等效的。`status`和`app_id`參數都是URL里面不存在的,屬于隱式傳值,當然并不一定需要用到,只是在需要的時候可以使用。 ### 路由參數 當路由地址采用數組方式定義的時候,還可以傳入額外的路由參數。 > 這些參數的作用是限制前面定義的路由規則的生效條件。 ##### 限制URL后綴 例如: ~~~ 'blog/:id'=>array('blog/read','status=1&app_id=5',array('ext'=>'html')), ~~~ 就可以限制html后綴訪問該路由規則才能生效。 ##### 限制請求類型 例如: ~~~ 'blog/:id'=>array('blog/read','status=1&app_id=5',array('method'=>'get')), ~~~ 就限制了只有GET請求該路由規則才能生效。 ##### 自定義檢測 支持自定義檢測,例如:例如: ~~~ 'blog/:id'=>array('blog/read','status=1&app_id=5',array('callback'=>'checkFun')), ~~~ 就可以自定義定義checkFun函數來檢測是否生效,如果函數返回false則表示不生效。 [上一頁](# "上一頁")[下一頁](# "下一頁")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看