Sie müssen die statische Route vor den anderen Routen setzen. Wenn Laravel prüft, welche Route zu verwenden ist, wenn Sie zu m/s gehen, überprüft es die Routen, bis es eine Übereinstimmung erreicht. Also, wenn Sie haben:
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 bemerkt, dass die erste Route gültig ist, da m/SNES bedeutet, dass „snes“ das sein kann {Spiel} variabel.
Wenn Sie die statische Route auf setzen, aber:
Route::get('/m/snes', '[email protected]')->name('snes')
Route::get('/m/{game}', '[email protected]')->name('game');
Route::get('/m/{game?}', '[email protected]')->name('all');
sobald es erreicht er es merkt es ein Spiel ist. Und wenn Ihre beabsichtigte URL so etwas wie m/n64 war, sucht sie weiter, bis sie eine Übereinstimmung findet (in diesem Fall wäre es die nächste Route auf der Liste). Dies ist ein häufiges Vorkommnis bei Routing-Dateien, sogar in JS-Projekten.