Так как у вас есть подстановочный знак в конце ваших маршрутов, первый всегда будет срабатывать.Поэтому убедитесь, что у вас есть отдельные маршруты для функций контроллера.Вы все еще можете использовать тот же блейд-файл в контроллере.
Route::get('/students/alphabet/{alphabet}', 'PostController@showByAlphabet');
Route::get('/students/name/{name}', 'PostController@showByName');
Route::get('/students/class/{class}', 'PostController@showByClass');
Если у вас тот же маршрут с параметром, то у маршрутизатора нет возможности узнать, являются ли символы, которые вы отправляете, алфавитными,имя или класс.