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

ThinkPHP 默認控制器設置:DEFAULT_MODULE 配置詳解與路由機制

     編輯:程式設計綜合問答

問題

ThinkPHP (3.x/5.x/6.x) 默認訪問 `https://domain/` 時執行哪個模塊/控制器/方法?如何修改默認入口?

版本差異速查

版本默認模塊默認控制器默認方法修改配置鍵
TP 3.2 Home Index index `DEFAULT_MODULE`、`DEFAULT_CONTROLLER`、`DEFAULT_ACTION`
TP 5.0/5.1 index (應用目錄) Index index `app_route` 配置、`default_return_type`、路由完整定義
TP 6.0/8.0 index (應用目錄) Index index `app.default_app`、`route.default_module`、`route.default_controller`、`route.default_action`

TP 3.2 經典配置 (application/Common/Conf/config.php)


return array(
    'DEFAULT_MODULE'     => 'Home',      // 默認模塊
    'DEFAULT_CONTROLLER' => 'Index',     // 默認控制器
    'DEFAULT_ACTION'     => 'index',     // 默認操作方法
    
    // 路由開啟
    'URL_ROUTER_ON'      => true,
    'URL_ROUTE_RULES'    => array(
        '/' => 'Home/Index/index', // 根路徑顯式映射
    ),
);

TP 5.1/6.0 配置 (config/app.php)


return [
    'default_app'       => 'index',   // 默認應用 (單應用模式可忽略)
    'app_namespace'     => 'app',
    
    // 路由配置 (route.php 更推薦)
    'route' => [
        'default_module'     => 'index',
        'default_controller' => 'Index',
        'default_action'     => 'index',
    ],
];

路由定義最佳實踐 (route.php)


// TP 5.1/6.0/8.0
use think\Route;

Route::get('/', 'index/Index/index');           // 根路徑
Route::get('hello/:name', 'index/Index/hello'); // 動態參數
Route::post('api/user', 'api/User/save');       // API 分組
Route::group('admin', function () {
    Route::get('user/list', 'admin/User/list');
})->middleware('auth'); // 中間件

每個應用是否必須建 IndexController?

  • 單應用模式:`app/controller/Index.php` 可選,若無則 404 (除非路由映射到其他控制器)。
  • 多應用模式:每個應用目錄下建議有 `controller/Index.php` 作為該應用默認入口,但可通過路由完全自定義。
  • 最佳實踐:保留 `Index` 控制器作為約定俗成的默認入口,語義清晰、利於團隊協作、框架自動生成代碼 (命令行 `php think make:controller Index`)。

常見誤區

  • 以為 `DEFAULT_MODULE` 只能在 `config.php` 設置,**實際 `route.php` 優先級更高**且更靈活。
  • 修改配置後**未清理運行時緩存** (TP5 `runtime/cache`、TP6 `runtime`),導致不生效 → 執行 `php think clear` 或手動刪除 `runtime` 目錄。
  • 控制器類名必須 **StudlyCase** (`Index`)、文件名 `Index.php`、命名空間 `app\controller` (TP6) / `app\index\controller` (TP5),區分大小寫 (Linux 服務器)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved