在我的路线文件中,web.php
我有,
Route::get('/m/{game}', 'CommentController@index')->name('game');
Route::get('/m/{game?}', 'GameController@all')->name('all');
但我可以添加“静态”路线,例如:
Route::get('/m/snes', 'GameController@snes')->name('snes')
答案 0 :(得分:3)
安排您的路由以使静态位于顶部,因此laravel路由将首先找到静态而不是转到/m/{game}
和/m/{game?}
答案 1 :(得分:2)
这条路线:
Route::get('/m/snes', 'GameController@snes')->name('snes');
在使其运作的其他路线之前。
答案 2 :(得分:1)
您必须将静态路由置于动态路由之上。
if
答案 3 :(得分:0)
您必须将静态路由放在其他路由之前。当Laravel在你去m / snes时检查使用哪条路线时会发生什么,它会检查路线直到达到匹配为止。所以如果你有:
Route::get('/m/{game}', 'CommentController@index')->name('game');
Route::get('/m/{game?}', 'GameController@all')->name('all');
Route::get('/m/snes', 'GameController@snes')->name('snes')
Laravel注意到第一条路线是有效的,因为m / snes意味着" snes"可以是{game}变量。
如果你把静态路线放在最上面,那么:
Route::get('/m/snes', 'GameController@snes')->name('snes')
Route::get('/m/{game}', 'CommentController@index')->name('game');
Route::get('/m/{game?}', 'GameController@all')->name('all');
一旦到达它就会注意到它是匹配的。如果您的预期URL类似于m / n64,它会一直搜索,直到找到匹配项(在这种情况下,它将是列表中的下一个路径)。这是路由文件的常见现象,即使是在JS项目中也是如此。