1

我正在尝试在我的 Gatsby 项目中构建一个注册确认页面。我从在这里创建的状态器开始https://github.com/DWboutin/gatsby-react-intl-starter

gatsby-node.js中,我设置了一个 pageMatch 道具,让我的页面处理提供的 ID。(请注意,这value是我的语言构建过程的一部分)

if (page.path.match(/^\/client-side-page/)) {
    page.matchPath = (value !== baseLanguage) ? `/${value}/client-side-page/*` : '/client-side-page/*';
}

有了它,我可以访问页面/client-side-page/{MY ID}。在该页面中,我用于reach/router检索:id路径中的 并仅在提供确认表单时才呈现确认表单。

一切正常,但是,当我直接加载页面时,它向我展示了 404 组件。

我试图设置一个默认的路由组件,当它找不到好的路径时。但它在显示它之前一直向我显示 404。

<Router basepath={`/${pageContext.matchPath.replace('/*', '/')}`}>
    <ClientSignupDefault default />
    <ClientSignup path=":id" />
</Router>

有没有办法做到这一点,或者我应该找到另一种方法来管理这个?

谢谢您的帮助!

4

1 回答 1

0

如果你想避免 404,你必须在你的网络服务器中放置一个重定向,从/client-side-page/*/client-side-page/index.htmlie。使用 ngnix:

rewrite ^/client-side-page/([^.]*?/)$ /client-side-page/index.html;

没有其他方法可以解决这个问题。

于 2019-07-31T15:30:31.623 回答