PHP之ThinkPHP5路由的开启

ThinkPHP5路由默认启用,关键在于正确配置和使用;需确保config.php中未禁用、route.php存在、服务器支持URL重写,并通过route:list命令或dump(Route::rules())验证。

ThinkPHP5 默认已开启路由功能,无需额外“开启”,关键在于正确配置和使用。

确认路由是否启用

TP5 的路由系统默认是启用的,入口文件(如 public/index.php)中调用 think\App::run() 时会自动加载并初始化路由。只要没在应用配置中手动关闭,路由就处于工作状态。

  • 检查 app/config.php 中是否存在 'url_route_on' => false —— 若有,请删掉或改为 true
  • 确保 app/route.php 文件存在(即使为空),这是 TP5 路由规则的默认定义位置

基础路由注册方式

app/route.php 中添加规则即可生效,例如:

  • Route::get('hello', 'index/hello'); —— 访问 /hello 映射到 Index 控制器的 hello 方法
  • Route::rule('user/:id', 'user/read')->method('GET'); —— 支持变量参数和请求方法限定
  • 支持闭包路由:Route::get('test', function() { return 'Hello TP5'; });

URL 访问与伪静态注意点

TP5 路由依赖于 Web 服务器的 URL 重写支持:

  • Apache 需启用 mod_rewrite,且项目根目录有正确的 .htaccess 文件(TP5 自带)
  • Nginx 需在 server 块中配置 try_files $uri $uri/ /index.php?$query_string;
  • 若直接访问 index.php/xxx 能路由成功,但去掉 index.php 报 404,说明重写未生效,需检查服务器配置

调试与验证技巧

快速确认路由是否起作用:

  • route.php 开头加一行:dump(Route::rules());,访问任意页面可查看当前所有注册路由
  • 使用命令行:运行 php think route:list 查看完整路由列表(需开启命令行环境)
  • 临时关闭路由测试:在 config.php'url_route_on' => false,观察 URL 是否退回传统 ?s=index/index/index 模式

基本上就这些。路由不是“开关型”功能,而是“配置即启用”的设计,重点在写对规则、配好服务器、理清访问路径。