問題描述:
路由設置 (配置文件已開啟強制路由和路由完全匹配)
<?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路由