2017-12-11 5 views
2

laravelにはRoutes::any()メソッドがあり、それ以外のルートをキャッチする方法については興味があります登録して404ページを返すと、それはRoute:any('/', function() { abort(404) });のようなものになると私は知っている私はそれが/であるとは思わない私はホームページとして登録している。Laravel 5.5.xで登録されていないルートをキャッチする適切な方法はありますか

私が見ているすべての例は、2歳であり、5.5のリリース時点の日付です。

+0

最終目標は何ですか?なぜ404リクエストを受け取りたいのですか? –

+0

Laravelは未定義のルートに対して既に404を発行します。 – fubar

答えて

1

404ページのビューをカスタマイズするだけであれば、何かを「キャッチ」する必要はありません。 You can just modify the 404 error pageresources/views/errors/404.blade.php

404が発生したときに何かしたい場合はexception handlerrenderメソッドを使って行うことができます。あなたはまた、404エラーを処理するためにmiddlewareを使用することができます

class ExampleMiddleware 
{ 
    public function handle($request, Closure $next) 
    { 
     $response = $next($request); 

     if($response->getStatusCode() == 404) { 
      // Handle 404 
     } 
    } 
} 

あなたのユースケースによっては、terminable middlewareがより適切かもしれません。

+0

例外をキャッチしてレスポンスを上書きするのに 'ExceptionHandler'を使用してみませんか? – fubar

+0

@fubarできます。それは私の答えです。何か不足していますか? –

+0

あなたは何かを逃していません。私はちょうど明らかに正しく読むことができません。私の悪い。 – fubar

1
  • Laravel 5.5ではフォールバックURLがあり、ルートが見つからない場合に呼び出されます。

    ルート::任意( "{}フォールバック" 関数(){

    DD( 'これはフォールバック関数である。');

    })。

  • か、5.4のような古いバージョンのためにこれを試すことができ、5.3など

    ルート::任意の( "{すべて}"、機能(){

    dd('This is fallback function'); 
    

    });

+0

これは間違っています。 'Route :: anyback'ではなく' Route :: fallback'でなければなりません。 –

+0

何が私の答えに間違っていて、@mtinsleyが動いていないのですか? –

関連する問題