Laravel routes:子文件夹和RouteCollection中的错误

Laravel routes:子文件夹和RouteCollection中的错误,laravel,routes,Laravel,Routes,我有带子文件夹的URL: /book/yur.voprosy/vopros-1.json 我不计算/book之后的子文件夹级别/ 我的路线是: Route::get('/book/{file?}', 'BookController@index'); 但如果级别大于1,则laravel返回: RouteCollection.php第161行中的NotFoundHttpException: 如何修复它?在Laravel中,您无法真正做到这一点,因为路由系统希望您定义准确的“路径”,因此,要使其工作

我有带子文件夹的URL:

/book/yur.voprosy/vopros-1.json

我不计算/book之后的子文件夹级别/ 我的路线是:

Route::get('/book/{file?}', 'BookController@index');
但如果级别大于1,则laravel返回: RouteCollection.php第161行中的NotFoundHttpException:


如何修复它?

在Laravel中,您无法真正做到这一点,因为路由系统希望您定义准确的“路径”,因此,要使其工作,您必须:

Route::get('/book/{folder?}/{file?}', 'BookController@index');
在控制器中按以下方式使用:

public function index($folder = null, $file = null) { ... } 
所以你可以这样做

Route::get('/book/{f1?}/{f2?}/{f3?}/{f4?}/{f5?}/{f6?}/{f7?}', 'BookController@index');
在你的控制器使用中

public function index() {  

    $file = implode('/', func_get_args());

} 
$numargs=func_num_args()

或者你可以:

Route::get('/findbook', 'BookController@index');
然后击中

https://yourdomain.com/findbook?filename=yur.voprosy/vopros-1.json
并使用

Input::get('filename')

您的url显示您需要1个可选参数。因此,它将始终在
book
之后的1个参数处停止。如果有更多参数,它将始终返回not found。您到底想将什么与您的路线匹配?感谢使用GET参数的解决方案!没关系!