如何在Laravel 5.X

时间:2016-01-16 19:28:39

标签: php routing laravel-5

我需要一个laravel 5 routes.php条目,它将捕获网站特定domain.com/premium-部分的所有流量,以便我可以在访问优质内容之前提示人们成为会员。

我会回答我自己的问题〜希望人们可以使用这些信息。

5 个答案:

答案 0 :(得分:38)

你也可以通过在参数上使用正则表达式来捕捉'all'。

Route::group(['prefix' => 'premium-section'], function () {
    // other routes
    ...
    Route::get('{any}', function ($any) {
        ...
    })->where('any', '.*');
});

如果没有使用可选参数定义路由,也可以捕获整个组。

Route::get('{any?}', function ($any = null) {
    ...
})->where('any', '.*');

最后一个也会捕获'domain.com/premium-section'。

答案 1 :(得分:13)

这就是诀窍:

Route::any('/{any}', 'MyController@myMethod')->where('any', '.*');

答案 2 :(得分:2)

  1. 在app / Http / routes.php中我创建了一条路由,它将捕获domain.com/premium-section/anywhere/they/try/to/go中的所有流量,并尝试在PremiumSectionController中查找并执行匹配的功能< / LI>
  2. 但是没有任何匹配的方法,只是一个全能的。

    Route::group(['as' => 'premium-section::',
                  'prefix' => 'premium-section',
                  'middleware' => ['web']],
                  function(){
                     Route::any('', 'PremiumSectionController@premiumContentIndex');
                     Route::controller('/', 'PremiumSectionController');
    
                  });
    
  3.     namespace App\Http\Controllers;
    
        use ...
    
        class PremiumSectionController extends Controller{
    
            public function premiumContentIndex(){
               return 'no extra parameters';
            }
    
            //magically gets called by laravel
            public function missingMethod($parameters = array()){
                return $parameters;
            }
    
        }
    

答案 3 :(得分:0)

Laravel 现在有一个内置的方法:

https://laravel.com/docs/master/routing#fallback-routes

答案 4 :(得分:-1)

这对我有用

// The catch-all will match anything except the previous defined routes.
Route::any('{catchall}', 'CatchAllController@handle')->where('catchall', '.*');