在我的路線文件,web.php
我有,將靜態路由添加到應該是動態的路由?
Route::get('/m/{game}', '[email protected]')->name('game');
Route::get('/m/{game?}', '[email protected]')->name('all');
但我可以添加「靜態」的路線,例如:
Route::get('/m/snes', '[email protected]')->name('snes')
在我的路線文件,web.php
我有,將靜態路由添加到應該是動態的路由?
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路由會發現靜態第一,而不是去到/m/{game}
和/m/{game?}
您必須將靜態路線置於動態路線之上。
Route::get('/m/snes', '[email protected]')->name('snes')
Route::get('/m/{game}', '[email protected]')->name('game');
Route::get('/m/{game?}', '[email protected]')->name('all');
您必須將靜態路由放在其他路由之前。會發生什麼情況是,當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項目中也是如此。