Laravel не бросает 404, когда маршрут заканчивается на .php - PullRequest
0 голосов
/ 25 июня 2018

Я использую Laravel 5.5 в сочетании с NGINX 1.10.3 и Varnish 5.

Каждый раз, когда я набираю маршрут, который не существует, laravel выдает исключение 404 и отображается мой пользовательский resources/views/errors/404.blade.php.

Проблема в том, что когда я добавляю .php к маршруту, которого не существует, я получаю

File not found.

сообщение от NGINX. Как можно отобразить мой пользовательский 404.blade.php, даже если .php добавлен к несуществующему маршруту?

Может быть, мне следует переписать VCL лака, чтобы отрезать завершающий .php, а затем передать запрос бэкэнду (NGINX)?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Ваше расположение обработчика PHP-скриптов должно выглядеть так, чтобы достичь желаемого:

location ~ \.php$ {
    try_files  $uri /index.php =404;
    ...
}

Здесь try_files необходим для маршрутизации запросов на несуществующие .php-скрипты через обработчик Laravel index.php (который будет исполнять магию «не найден»).

0 голосов
/ 25 июня 2018

внутри вашего приложения / Исключения / Handler.php

public function render($request, Exception $exception)
    {


        if($this->isHttpException($exception)){
                switch ($exception->getStatusCode()) {
                    case 400:
                        return redirect('/');
                    case 404:
                        return view('errors.404');  // your 404 error page
                        break;
                }
        } 
        return parent::render($request, $exception);
    }
...