教训:
自我感觉没问题的路由配置今天出了个严重忽略是路由造成的问题,以至于花了2个小时才解决,血的教训,特此备忘!
正文:
我的系统最近加了个模块,举例:叫代理模块;模块名为:agent。所有功能开发完之后,开始上线,但由于测试人员说:www.game.com/agent 访问会报错,查到原因是因为本人使用的第三方快速开发框架将默认访问路径修改为了home/index,为了不改原有配置,我想了个办法(马上要入坑了,我还不知道),我在路由rote.php文件配置了一个路由:
//Route::rule('agent','agent/user/login');这配置一看没问题,而且以前也配置了同样的代码:
//Route::rule('dbm','agent/Dbmanage/index');而且也用了很久,访问www.game.com/dbm一直都没有问题,感觉自己很有自信(这样我就完全忽略路由可能有问题)
仔细品读这句代码发现:这样配置就代表,agent模块下的所有路径url都会被解析到agent/user/login上面,顿时我好想明白了什么!!!如果将www.game.com/agent改成非模块字符访问就不会存在这个问题了!例如:www.game.com/agt(或者其它abcdefg),到这里根本原因已经定位到了,经过测试就是它,让我疏忽的地方!
最后提醒一下,Route::rule('agt','agent/user/login');这样配置会导致原来的url路径会失效,也就是访问agent/下面的控制器会报错,说没有xxx控制器或方法,解决办法是配置:Route::rule('agent/dbmanage/index','agent/Dbmanage/index');也就是再加一句代码路由到同样的地址,那么原来的地址就能正常访问了。
这样:
Route::rule('dbm','agent/Dbmanage/index');//dbm可以成abcdefg
Route::rule('agent/dbmanage/index','agent/Dbmanage/index');
其实以前也遇到过一次,不过那次很快就解决了,也没太注意,也想不到还会犯,哎,老了,不灵光了~哈哈