这是我的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。
我尝试了很多解决方案,但运气不好。
这是我的文件结构。
答案 0 :(得分:0)
这是一个已知问题,可能不会得到解决。可能的解决方法是设置服务器端重定向。例如,如果您在netlify上,则可以将其添加到netlify.toml
:
[[redirects]]
from = "/blog/*"
to = "/blog"
status = 200
force = true