如何配置Laravel路由器一些路由规则工作在不同的路径?
我在A.com
上部署了我的Laravel 5项目,我也想把它放在B.com/a
之下。出于某种原因,我应该在路由器中处理它的/a
路径。如何配置Laravel路由器一些路由规则工作在不同的路径?
所以在路由器我写: Route::get('post','[email protected]'); Route::get('a/post','[email protected]');
这不是一个好方法,因为有冗余,尤其是有很多其他的路由规则。
在文档中,只有{xx}?
来处理可选参数,但在我的项目中,它不是参数而不是静态字符串。
有没有更好的方法来组合两条线?
我会在foreach循环中使用路由前缀。这可以让您快速轻松地管理路线上的前缀,同时将它们全部保存在一个地方。
foreach([null, 'a'] as $prefix) {
Route::group(['prefix' => $prefix], function() {
// Your routes here
});
}
未加前缀的路由优先,因为在这种情况下,路由将首先生成。如有必要,您可以轻松地交换阵列。
如果你真的想在一个路由定义中做到这一点,你可以使用正则表达式来匹配路由。
Route::get('{route}', function() {
dd('Browsing ' . app('request')->path());
})->where('route', '(a/)?post');
但它显然不是很干净/可读,所以可能不推荐。
谢谢,我使用foreach来包装所有规则。这似乎没有优雅的方式来做到这一点。 – Fancyoung
你可以这样做:
RealRoutes.php:
Route::get('post','[email protected]');
// ... include all of your other routes here
routes.php文件:
include('RealRoutes.php');
Route::group(['prefix' => 'a/'], function() {
include('RealRoutes.php');
});
有可能是一个更好的办法来解决这个使用lambda函数或类似,但上述应该作为一个快速解决方案。
我有一些不同的路线组,所以使用@Ben Swinburne的答案。还是谢谢。 – Fancyoung
如果有更多路由器,它以相同的前缀开始,则可以使用路由前缀。 http://laravel.com/docs/5.1/routing#route-group-prefixes – Iamzozo