Как установить компонент по умолчанию только на клиентской стороне Gatsby.js?
Я пытаюсь создать страницу подтверждения регистрации в моем проекте Gatsby. Я начал со статера, который создал здесь https://github.com/DWboutin/gatsby-react-intl-starter.
В gatsby-node.js
Я установил реквизит pageMatch, чтобы моя страница обрабатывала предоставленные идентификаторы. (Обратите внимание, что 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>
Есть ли способ сделать это или я должен найти другой способ справиться с этим?
Спасибо за помощь!
0 ответов
If you want to avoid the 404 you must place a redirect in your web server from /client-side-page/*
to /client-side-page/index.html
ie. with ngnix:
rewrite ^/client-side-page/([^.]*?/)$ /client-side-page/index.html;
there's no other way around this.