# ThinkPHP 8 控制器 URL 访问规则 > 来源:框架内置(ulthon-) > 作用域:所有涉及控制器路由、URL 构造的场景 > 触发条件:编写/调试控制器路由、URL 报错、配置路由时加载 ## 大驼峰命名转换规则 ThinkPHP 8 默认开启 URL 自动转换(`url_convert`)。大驼峰命名(CamelCase)的控制器和方法在 URL 中转换为小写+下划线(snake_case)。 - **控制器类名**:`UserGroup` -> URL:`user_group` - **操作方法名**:`public function editInfo()` -> URL:`edit_info` 示例:控制器 `app\admin\controller\UserGroup.php` 中的 `editInfo` 方法: 访问路径:`/admin/user_group/edit_info` ## 多级控制器访问规则 控制器存放在子目录中时,URL 使用 `.`(点号)连接目录名和控制器名。 - **目录结构**:`app/admin/controller/system/Config.php` - **访问路径**:`/admin/system.config/index` 注意: - 子目录名建议使用全小写 - 如果子目录名也是大驼峰,同样遵循转换规则 ## 混合使用示例 | 控制器文件路径 | 类名 | 方法名 | 对应 URL 路径 | |---|---|---|---| | `controller/Index.php` | `Index` | `index` | `/admin/index/index` | | `controller/UserGroup.php` | `UserGroup` | `add` | `/admin/user_group/add` | | `controller/system/Admin.php` | `Admin` | `login` | `/admin/system.admin/login` | | `controller/mall/GoodsCate.php` | `GoodsCate` | `getList` | `/admin/mall.goods_cate/get_list` | ## 常见问题排查 - **404 错误**:检查是否漏掉了多级控制器的 `.` 分隔符 - **大小写敏感**:URL 无法识别下划线时,检查 `config/route.php` 中 `url_convert` 是否为 `false` - **多应用影响**:多应用模式下,URL 第一段是应用名(如 `admin`),后续才是控制器和方法 ## 开发者建议 - 代码中使用大驼峰命名,前端请求/模板链接中明确指向转换后的路径,或使用系统助手函数自动生成 - 复杂 URL 建议在 `route/*.php` 中手动定义路由规则