Currenlty有一个ImageController,用于捕获/media/upload/
下的路由和一个带有missingMethod()的IndexController,用于捕获其他URL。
但我不希望IndexController捕获/media/
- urls
我有什么:
<?php
Route::get('media/upload/{userId}/{productId}/view/{size}/{filename}',
'ImageController@anyView');
Route::controllers(['/' => 'IndexController']);
尝试使用以下方法添加404路线:
<?php
Route::get('media/{path?}/{path2?}/{path3?}/{path4?}/{path5?}/{path6?}',
function() {throw new NotFoundHttpException();});
但如果网址超过8&#39; /&#39;然后IndexController捕获URL。
如何编写捕获所有media/
- url的路由(ImageController使用的路由除外)?
答案 0 :(得分:1)
基本上,如果您想要抓住media*
,请执行以下操作:
Route::get('media/upload/{userId}/{productId}/view/{size}/{filename}',
'ImageController@anyView');
Route::get("media/{param?}", function ($param) {
throw new NotFoundHttpException();
})->where("param",".*")
Route::controllers(['/' => 'IndexController']);
这应该在媒体之后捕获所有内容并将其放入路由处理程序中的$param
。理想情况下,匹配第一条路线的任何东西都不会被第二条路线捕获,然后匹配/ media *的任何东西都不会被索引捕获。
但顺序很重要。
答案 1 :(得分:0)
首先,您必须在api.php文件中编写要在ImageController上方捕获的路径。现在,执行此操作的最佳方法是将您可以使用命令创建的CustomMiddleware中的两个路径分组
php artisan make:middleware MyMiddleware
现在使用此中间件检查 / 的数量并传递请求或根据您的要求抛出异常。