1. 程式人生 > >【備忘】關於tp動態註冊路由的挖坑採坑經驗

【備忘】關於tp動態註冊路由的挖坑採坑經驗

教訓:

自我感覺沒問題的路由配置今天出了個嚴重忽略是路由造成的問題,以至於花了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');

 其實以前也遇到過一次,不過那次很快就解決了,也沒太注意,也想不到還會犯,哎,老了,不靈光了~哈哈