我想定义一个包含斜杠 /
字符的路由 example.com/view/abc/02
其中 abc/02
是参数。
如何防止 Laravel 读取斜杠作为下一个路由参数的分隔符?因此,我现在得到一个 404 not found error
。
原文由 hserusv 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想定义一个包含斜杠 /
字符的路由 example.com/view/abc/02
其中 abc/02
是参数。
如何防止 Laravel 读取斜杠作为下一个路由参数的分隔符?因此,我现在得到一个 404 not found error
。
原文由 hserusv 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个类似的问题,但我的 URL 包含几个路由参数:
/test/{param1WithSlash}/{param2}/{param3}
以下是我处理该案例的方式:
Route::get('test/{param1WithSlash}/{param2}/{param3}', function ($param1MayContainsSlash, $param2, $param3) {
$content = "PATH: " . Request::path() . "</br>";
$content .= "PARAM1: $param1WithSlash </br>";
$content .= "PARAM2: $param2 </br>".PHP_EOL;
$content .= "PARAM3: $param3 </br>".PHP_EOL;
return Response::make($content);
})->where('param1MayContainsSlash', '(.*(?:%2F:)?.*)');
希望它能有所帮助。
原文由 Pierre 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
1 回答1.2k 阅读
将下面的 catch-all 路由添加到你的
routes.php
的底部,然后记得运行composer dump-autoload
。请注意指定参数可能内容的“->where”的使用,使您能够使用包含斜线的参数。而不是在您的控制器中,您只需像往常一样处理数据(就像它不包含斜杠一样)。
这应该适合你。
此外,这里有关于路由参数的详细 Laravel 文档:[ docs ]