仅在生产时在gatsby中以动态路线重新加载页面时得到404

时间:2020-11-09 08:57:52

标签: reactjs routes gatsby

这是我的gatsby-node.js代码


exports.onCreatePage = async ({ page, actions }) => {
    const { createPage } = actions;

    // Only update the `/blogs` page.
    if (page.path.match(/^\/blog/)) {
        // page.matchPath is a special key that's used for matching pages
        // with corresponding routes only on the client.
        page.matchPath = "/blog/*";

        // Update the page.
        createPage(page)
    }
}

这是我在博客页面上添加的路线。

 return (
        <Layout>
            <Router basepath="/blog">
                <BlogPage path="/" blogs={blogs} tags={tags} categories={categories}/>
                <BlogDetail path="/:slug" blogs={blogs} tags={tags.data}/>
                <Category path="/category/:category" blogs={blogs} tags={tags.data} categories={categories.data}/>
                <Category path="/tags/:tag" blogs={blogs} tags={tags.data} categories={categories.data}/>
                <Category path="/author/:author" blogs={blogs} tags={tags.data} categories={categories.data}/>
            </Router>
        </Layout>
    )

在重定向点击时效果很好。但是,一旦页面加载并刷新它,就会得到404。

我尝试了很多解决方案,但运气不好。

这是我的文件结构。

enter image description here

1 个答案:

答案 0 :(得分:0)

这是一个已知问题,可能不会得到解决。可能的解决方法是设置服务器端重定向。例如,如果您在netlify上,则可以将其添加到netlify.toml

[[redirects]]
  from = "/blog/*"
  to = "/blog"
  status = 200
  force = true