编辑:自从Laravel 4发布以来,关于此主题一直存在一些困惑,此答案针对的是Laravel 3。
有几种方法可以解决此问题。
第一种方法是匹配
(:any)/(:all?):
Route::any('(:any)/(:all?)', function($first, $rest=''){ $page = $rest ? "{$first}/{$rest}" : $first; dd($page);});这不是最佳解决方案,因为它分为多个参数,并且由于某种原因(:all)本身无法运行(错误?)
第二种解决方案是使用正则表达式,我认为这是比上面更好的方法。
Route::any( '(.*)', function( $page ){ dd($page);});还有另一种方法,即使这些路由返回了404,即使路由可能已经匹配了其他模式,它也可以让您检查是否有cms页。该方法修改了在
routes.php以下方法中定义的事件侦听器:
Event::listen('404', function() { $page = URI::current(); // custom logic, else return Response::error('404');});但是,我的首选方法是#2。我希望这有帮助。无论您做什么,都要确保在这些路由之上定义所有其他路由,以捕获所有路由,之后定义的任何路由都将永远不会触发。



