我正在使用laravel
框架。我设置了几个routes
,其中包含 example.com/route/{dir_name}
等参数。当我传入一个有孩子的目录时,它认为它是另一条路线。有没有办法绕过它?
我正在使用此代码:
Route::get('/route/something/{path}',array('as'=>'something',function($path){
return $path;
}));
当我使用/route/something/home/user/dev
时,它会抛出Symfony\Component\HttpKernel\ Exception\NotFoundHttpException
个异常。
答案 0 :(得分:1)
您可以尝试使用正则表达式对route参数使用约束。
Route::any('/route/{dir_name}', function ($dir_name) {
return $dir_name;
})->where('dir_name', '.*');
请参阅有关route parameters的文档部分,特别是"正则表达式路径约束"一部分。
答案 1 :(得分:0)
您有 example.com/route/ {dir_name}
我假设您的路线在routes.php中定义
Route::get('/route/{dir_name}', [
'as' => 'someRoute',
'uses' => 'SomeController@index'
]);
在SomeController.php文件中,您将使用此方法接收{dir_name}
public function index($dir_name) {
return $dir_name;
}
相反,你有路线
Route::get('/route/something/{path}',array('as'=>'something',function($path){
return $path;
}));
/路线/的东西强> / {路径}
如果您希望网址中包含某些内容,则必须在路由中。这就是您获得 NotFoundHttpException
的原因