emosheeep / vite-plugin-virtual-mpa

Out-of-box MPA plugin for Vite, generate multiple entries using only one template.
https://stackblitz.com/~/github.com/emosheeep/vite-plugin-virtual-mpa
MIT License
116 stars 15 forks source link

默认 `rewrite` 规则过于宽泛导致 `Rewriting /infos/home/ to /fruits/home.html` #35

Open jiadesen opened 1 year ago

jiadesen commented 1 year ago

example 默认规则为:/\/(apple|banana|strawberries|home)/ 这会匹配任何存在 /home 的地址,会造成如题所示重定向错误,正常应该重定向到 /infos/home/index.html

emosheeep commented 1 year ago

默认规则是兜底规则,不是100%正确的,不满足条件的时候可以自己配置插件的 Rewrites 规则,这个规则优先级更高

jiadesen commented 1 year ago

懂,但是是否默认就提供精确点的规则,因为绝大部分用户不会主动去了解这个插件的原理,更不会去配置 rewrites

emosheeep commented 1 year ago

我理解 base 加 name 足够了,/info/home 这种路径本身就不在入口配置里,不具有可控性,兼容不可控的路径我理解就像一个无底洞,是不具备可维护性的

jiadesen commented 1 year ago

改进后的默认规则会是这样:/\/(apple|banana|strawberries|home)(?:\.html?)?(\?|#|$).*/,既然是多入口,肯定会对应到具体的 html 文件,然后就是参数的拼接了,仅此而已

emosheeep commented 1 year ago

懂,但是是否默认就提供精确点的规则,因为绝大部分用户不会主动去了解这个插件的原理,更不会去配置 rewrites

这么分析下来,是不是调整一下注册时机,configureServer 里 return 函数,在函数里注册。让 vite 内置的中间件先处理,我们最后在兜底会好一点

jiadesen commented 1 year ago

可以试一下

emosheeep commented 1 year ago

那先开着,周末看下

xxxxj-up commented 1 year ago

这个问题和我之前提的东西有一些类似,但我和作者大大是一个看法,就是问题在于 /info/ 不在配置里.这个探讨问题不如探讨多页面 + 路由的重定向问题: /a/about to /pages/b.html (已经解决).顺便一提, rewrite 规则的匹配是有顺序的,写 pages 时应当注意

jiadesen commented 1 year ago

问题在于 /info/ 不在配置里

我是觉得配置仅需对所需的重定向和构建产物负责,而且 vite 本身作为一个开发服务器,应避免破坏配置以外的行为