首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP URL 路由規則與配置完整指南

     編輯:PHP 綜合知識

ThinkPHP 提供靈活的 URL 路由機制,支援四種訪問模式與多種路由規則定義方式。本文系統整理 URL 大小寫設定、偽靜態後綴、路由規則陣列、正則路由與優先順序等核心配置。

四大 URL 訪問模式

模式範例特點
普通模式index.php?m=User&a=login傳統 GET 參數
PATHINFOindex.php/User/loginSEO 友善、結構清晰
REWRITE/User/login隱藏入口檔、最美觀
相容模式index.php?s=/User/login不支援 PATHINFO 環境的備選

配置 'URL_MODEL' => 2(PATHINFO)為最常用設定。

核心路由配置項

<?php
return [
    // 不區分大小寫
    'URL_CASE_INSENSITIVE' => true,

    // 偽靜態後綴限制
    'URL_HTML_SUFFIX' => 'html|shtml|xml',

    // 啟用路由
    'URL_ROUTER_ON' => true,

    // 路由規則陣列
    'URL_ROUTE_RULES' => [
        // 靜態路由
        'login' => 'User/login',
        'register' => '/User/register', // 以 / 開頭表示從網站根目錄

        // 動態路由(參數自動綁定到 $_GET)
        'user/:id' => 'User/profile',
        'article/:year/:month/:id' => 'Article/detail',

        // 參數型別限制(\d 限定數字)
        'item/:id\d' => 'Item/view',

        // 完全匹配($ 結尾)
        'page/:name$' => 'Page/view',

        // 正則路由(以 /^ 開頭 /$ 結尾)
        '/^article\/(\d{4})\/(\d{2})\/(\d+)$/' => 'Article/detail?year=:1&month=:2&id=:3',
    ],
];
?>

路由優先順序原則

  1. 越複雜(參數多、正則)的規則越前面
  2. 完全匹配($)優於前綴匹配
  3. 正則路由優於規則路由
'URL_ROUTE_RULES' => [
    'user/:id\d$' => 'User/profile',      // 最精確優先
    'user/:name$' => 'User/profileName',
    'user/:year/:month/:day$' => 'User/archive',
    '/^user\/(\d+)$/' => 'User/profile?id=:1', // 正則最後
],

常見問題與技巧

Q: 路由不生效?
A: 檢查 URL_ROUTER_ON 是否為 true、模組名稱大小寫、入口檔綁定模組設定。
Q: 如何獲取路由參數?
A: 動態路由參數自動注入 $_GET,控制器直接用 I('get.id') 取得。
Q: RESTful 風格路由?
A: ThinkPHP 3.2+ 內建 REST 路由支援,配置 'URL_ROUTE_RULES' => [['user', 'User']] 即可映射 GET/POST/PUT/DELETE 至 index/save/update/delete。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved