ThinkPHP路由404的根源是路由开关未开启、文件路径错误或缓存未清除:需确保config/app.php中'app_route'为true布尔值,路由规则写入对应应用的app/route/app.php并引入Route门面,最后执行php think route:clear和route:list验证。

新手第一次配ThinkPHP路由,90%的人卡在“写了Route::get()却访问直接404”,不是代码写错,而是框架根本没加载你的路由文件——开关没开、路径不对、缓存没清,三者任一缺失,路由就等于没写。
确认路由开关已物理打开
打开 config/app.php,找到 'app_route' 这一行,必须是布尔值 true,不能是字符串 "true"、数字 1 或被注释掉。
这一步漏掉,框架启动时直接跳过整个路由加载流程,【哪怕 route/app.php 里写满一百条 Route::get(),也全无效】。
多应用项目(如 app/admin/)还要单独检查 app/admin/config/app.php 里的 app_route 是否也为 true,主应用配置不继承。
立即学习“PHP免费学习笔记(深入)”;
把路由规则塞进对的文件里
方法一:单应用项目,只认 app/route/app.php 这一个文件。
方法二:多应用项目,比如 admin 子应用,必须写进 app/admin/route/app.php,而不是根目录下的 config/route.php 或 app/route.php。
当代理已经知道网站路由或内容URL,并且在启动前需要有效的sitemap XML、sitemap索引或robots.txt引用时,请使用sitemap。这是一个发布构件技能,而不是爬虫或SEO平台。
文件开头必须有 use think\facade\Route;,缺了这句,所有 Route::get() 都报 Class not found。
注意:config/route.php 只管全局行为开关(比如 url_html_suffix),【它不承载任何路由规则,往里写 Route::get() 是白忙活】。
清掉旧缓存,让新配置立刻生效
第一步:执行 php think route:clear,强制删掉 runtime/route/route.php。
第二步:再执行 php think route:list,看到你刚写的路由才说明真正加载成功。
第三步:如果 list 仍是空的,回看前两步——大概率是没在项目根目录执行命令,或者 app_route 还是 false。
Windows 用户特别注意:别用 Git Bash 执行 php think 命令,proc_open 会失败;用 CMD 或 PowerShell。


















