Gatsby通配符路径本地正常Netlify失效,如何配置重定向/重写规则
解决方案
完全可以通过Netlify重写规则实现需求,且不会丢失/my-path/后的路径内容,浏览器地址栏也不会发生跳转,不影响你前端读取路径后缀的逻辑。
你可以选择以下任意一种方式配置规则:
方式1:通过_redirects文件配置
- 在Gatsby项目根目录的
static文件夹下新建名为_redirects的文件(如果没有static文件夹自行创建即可) - 在文件中添加如下规则:
/my-path/* /my-path/index.html 200
方式2:通过netlify.toml配置
如果你的项目根目录已经有netlify.toml配置文件,直接在文件中添加以下规则即可:
[[redirects]] from = "/my-path/*" to = "/my-path/index.html" status = 200 force = false
注意事项
- 该规则属于200重写而非30X重定向,服务端会直接返回
/my-path/index.html的内容,浏览器地址不会变化,你可以正常在my-path.tsx中从window.location.href提取路径后缀的ID值 - 新增的规则需要放在所有重定向规则的最前面,避免被其他优先级更高的规则覆盖
- 你原本在
gatsby-node.js中写的matchPath配置无需删除,本地开发环境依然需要依赖该配置生效,和Netlify规则互不冲突
内容的提问来源于stack exchange,提问作者fullStackChris
相关产品推荐
相关产品推荐

