有开发者希望能够通过路由让某个目录静态文件可以被访问,例如开发者开发了一个后台插件,插件的静态文件全部在 vendor/foo/admin/src/public
下,则可以在config/route.php中添加下面路由让其可以被访问。
Route::any('/your/path/[{path:.+}]', function (Request $request, $path = '') {
// 静态文件目录
$static_base_path = base_path() . '/vendor/foo/admin/src/public';
// 安全检查,避免url里 /../../../password 这样的非法访问
if (strpos($path, '..') !== false) {
return response('<h1>400 Bad Request</h1>', 400);
}
// 文件
$file = "$static_base_path/$path";
if (!is_file($file)) {
return response('<h1>404 Not Found</h1>', 404);
}
return response('')->withFile($file);
});
这样通过url http://127.0.0.1:8787/your/path/xx/xx.js
访问静态文件了。
感谢大佬分享
https://www.workerman.net/q/8096 看看这个
有一个场景, 在一个监控端接收所有房间的新消息,workman能实现吗
Route::any('/your/path/[{path:.+}]', function (Request $request, $path)
最好改成
Route::any('/your/path/[{path:.+}]', function (Request $request, $path='')
不然访问/your/path/会报错
有道理,已经修正 👍
这个功能非常nice
有一个场景, 在一个监控端接收所有房间的新消息,workman能实现吗
这个功能非常 N I C E