Laravel - 处理带有通配符路径的页面

时间:2015-11-30 09:55:39

标签: php laravel routes laravel-5.1

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

我已加入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
}  );

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

这是完整的路线文件:

//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');

我该如何管理?

1 个答案:

答案 0 :(得分:0)

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

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

/ admin 路径被全能路径捕获的原因是您没有为/ admin网址定义路由。唯一将单独处理的URL是

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