Laravel-使用通配符路由处理页面


Laravel - Handle pages with wildcard route

在我的应用程序中,我需要设置一个响应任何页面的路由。

我已经把我的routes.php文件:

// Handle all the pages
Route::get('{slug?}', 'Frontend'PageController@show');

它是有效的,问题是现在我需要一个管理部分,所以在我的routes.php中,我在前一条路线之前添加了:

Route::group( [ 'prefix' => 'admin', 'middleware' => config('admin.filter.auth') ], function(){
    // other routes
}  );

问题是url site.com/admin已被通配符捕获,因此我无法访问该url。

这是完整的路由文件:

//admin routes
Route::group( [ 'prefix' => 'admin', 'middleware' => config('admin.filter.auth') ], function(){
    Route::get('upload-file', 'Backend'UploadController@index');
    Route::post('upload-file', 'Backend'UploadController@uploadFile');
    Route::get('load-contacts', 'Backend'UploadController@loadContacts');
}  );
// Handle all the pages
Route::get('{slug?}', 'Frontend'PageController@show');

我应该如何处理?

您可以通过提供一个正则表达式来轻松实现这一点,该表达式应用于匹配slug参数:

Route::get('{slug?}', 'Frontend'PageController@show')->where('slug', '.*');

catch-all路由捕获/admin路径的原因是您没有为/admin URL定义路由。唯一将单独处理的URL是

GET  /admin/upload-file
POST /admin/upload-file
GET  /admin/load-contacts