首页 > 解决方案 > 有没有办法将具有相同基本 url 段的所有 url 路由到 Gatsby 中的同一页面?

问题描述

我想要 site.com/shop/plp/、site.com/shop/plp/whatever-url 和 site.com/shop/plp/whatever-url?id:value 都去 site.com/shop/plp ,而不更改 url 或查询字符串。

我目前正在使用 Gatsby 和 @reach/router。

有没有办法在不诉诸重定向的情况下做到这一点?

标签: gatsby

解决方案


我能够通过Client-only routes实现这一点。基本上,它是 Gatsby 内置的前端解决方案,它使用页面中的特定文件来src/pages/foo.js匹配特定模式的所有 URL。

我在这里部署了这个特定问题的工作版本- Github repo。尝试导航到任何 URL 以/app/...JSON 占位符获取数据- 检查控制台输出。一些例子:

仅客户端路由是否正常工作取决于您的静态托管:

  • 例如,只有当我首先导航到静态生成的页面(如 index )然后导航到//app
  • 它只适用于 Github 页面。在考虑使用 AWS S3、Google 托管等之前进行测试。

看看这些文件:


推荐阅读