ManMadeMind
@ManMadeMind

При переходе по route с обязательными параметрами в фигурных скобках laravel выдает 404 | page not found. В чём проблема?

Проект в OpenServer на laravel6, всё работает отлично. Загрузил все файлы на хостинг, по простым роутам ( напр.:
{{ route('example') }} ) всё переходит как и должно. Но стоит попытаться перейти по роуту с обязательными параметрами ( напр.: {{route(' example', $item)}} ) сервер выдаёт ошибку 404 Not Found, но URL адрес в адресной строке показывает что переменная пришла.

Переходим:
{{ route(' example', $item) }}
Принимаем:
Route::get('/page/{item}', 'function@viewItem');
Получаем:
в адресной строке
https://www.website.ru/page/item
на самой странице
404 Not Found

Перерыл уже всё что мог. Я так понимаю проблема в файле htaccess, но как его настроить по моей проблеме, не могу найти. И вообще, сколько файлов htaccess должно быть в проекте? Я их не трогал, и файл только один в папке public. А многие пишут что должно быть два, еще и в корневой папке. Помогите пожалуйста разобраться.
  • Вопрос задан
  • 1511 просмотров
Решения вопроса 1
ManMadeMind
@ManMadeMind Автор вопроса
Всё оказалось до боли просто и банально. Я в своём вопросе написал же и ответ.
Боевой сервер, не отрабатывает кириллицу в динамических роутах.
На локальном сервере роуты
Route::get('/page/{item}', 'function@viewItem');
Route::get('/страница/{item}', 'function@viewItem');

отработают одинаково, то есть отработают вообще. А вот на боевой машине кириллица в url выдаст 404|page not found. После "латинизации" все динамические url'ки заработали отлично. Но что странно в этой ситуации, статическая кириллица
Route::get('/страница/что_то_любое_но_не_динамически_подставляемое', 'function@viewItem');

работает и на боевом сервере. Всем спасибо за участие, подсказки и желание помочь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Bone
Я бы попробовал для начала заменить 'function@viewItem' на
Route::get('/page/{item}', function ($item) {
  return $item;
});

Если это сработает, значит проблема в пути до контроллера@функции
Ответ написан
Fragster
@Fragster
помогло? отметь решением!
Если параметром в контроллере является модель, то при переходе по маршруту будет произведена попытка поиска по первичному ключу или выполнен метод resolveRouteBinding у модели при наличии. И если объект не будет найден - то будет как раз ошибка 404. https://laravel.com/docs/7.x/routing#route-model-b...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы