问题描述:
路由设置 (配置文件已开启强制路由和路由完全匹配)
<?php // route/route.php Route::get('/', function () { return 'hello,ThinkPHP5!'; }); Route::miss(function(){ return '非法请求'; });
直接访问 域名 正常
访问其他 未定义的路由地址 域名/a 提示错误消息,而不是跳到miss路由,miss路由未生效!
问题分析与解决
URL访问中还有一个 入口文件 的概念,默认为 index.php ,路由匹配需要结合入口文件一起才会生效。
修改访问地址 域名/入口文件/ ,路由访问正常
修改访问地址 域名/入口文件/a , miss路由生效
那有没有方法可以使 域名/a 直接生效而不用写入口文件呢?答案是有的,那就是隐藏入口文件。
以apache服务器为例,将 TP框架public/.htacces文件作以下修改
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
重新以 域名/a 的方式去访问,可以正常匹配到miss路由