webman 一个不能确定是否是BUG 求重示

langbin

当配置路由后 静态文件全失效


use Webman\Route;

Route::any('/{id}', [app\controller\Index::class, 'about'])->name('index.about');
Route::any('/{id}/{lg}', [app\controller\Index::class, 'auth'])->name('index.auth');

然后public目录下的所有文件都会执行路由了。
执行流程应该错了

不是应该根据请求头来判断是否为静态文件吗?具体我暂时还没有深入去看匹配的流程。
个人应该认为,第一先判断请求头是否为图片,CSS,JS,然后再判断请求的是不是文件之类的。最后再匹配路由

阅读 282
3个回答

walkor

框架首先匹配的是路由。

如果你的id是数字,可以这样。

Route::any('/{id:\d+}', [app\controller\Index::class, 'about'])->name('index.about');
Route::any('/{id:\d+}/{lg}', [app\controller\Index::class, 'auth'])->name('index.auth');
  • 暂无评论
langbin

这逻辑是不是有点问题呢?
因为路由规则不一定全是数字有时是英文
这时如果加载的静态资源也是英文层级的话那就是直接找路由了。

我把静态资源先读取的话这样就不影响后面的了。或者说根据请求头来判断一下优先级

其实如果单纯做API接口不做静态资源的话。是没有问题的。
你也可以去复现一下这个问题。

  • 暂无评论
walkor

已经调整为优先匹配静态文件,请更新 workerman/webman-framework 或更高版本
composer require workerman/webman-framework 1.0.20

  • 暂无评论