2017-01-23 162 views

回答

3

安排你的路由,以使在頂部的靜態的,所以laravel路由會發現靜態第一,而不是去到/m/{game}/m/{game?}

2

將這個路線:

Route::get('/m/snes', '[email protected]')->name('snes'); 

在其他路線之前,使其工作。

0

您必須將靜態路由放在其他路由之前。會發生什麼情況是,當Laravel在檢查m/snes時檢查使用哪條路線時,它會檢查路線,直到匹配成功。所以,如果您有:

Route::get('/m/{game}', '[email protected]')->name('game'); 
Route::get('/m/{game?}', '[email protected]')->name('all'); 
Route::get('/m/snes', '[email protected]')->name('snes') 

Laravel注意到第一條路是有效的,因爲米/ SNES意味着「SNES」可爲{}遊戲變量。

如果你放在上面的靜態路由,但是:只要達到它

Route::get('/m/snes', '[email protected]')->name('snes') 
Route::get('/m/{game}', '[email protected]')->name('game'); 
Route::get('/m/{game?}', '[email protected]')->name('all'); 

它注意到這是一個比賽。如果你想要的URL是類似m/n64的東西,它會一直搜索,直到找到匹配爲止(在這種情況下,它將成爲列表中的下一條路徑)。這是路由文件中的常見現象,即使在JS項目中也是如此。