Routing 404页语言键的Gatsby路由问题
我正在建立一个支持多种语言的博客。URL包含语言键,例如Routing 404页语言键的Gatsby路由问题,routing,gatsby,Routing,Gatsby,我正在建立一个支持多种语言的博客。URL包含语言键,例如/en/blog。我遇到了404页本地化的问题。这里描述的内容适用于除主页以外的所有路线。主页有以下URLwww.test.com/en,由于这个regex/^\/[a-z]{2}\/404\/$/ 我试图传入一个regex^\/?[a-z]{2}\/.+以匹配除/en之外的所有路由,但匹配路径似乎不匹配regex 页面排列在引擎盖下;然而,似乎/en和/en/不存在被同等对待,或者后者优先于前者 我想知道以前是否有人遇到过这个问题,也许有
/en/blog
。我遇到了404页本地化的问题。这里描述的内容适用于除主页以外的所有路线。主页有以下URLwww.test.com/en
,由于这个regex/^\/[a-z]{2}\/404\/$/
我试图传入一个regex^\/?[a-z]{2}\/.+
以匹配除/en
之外的所有路由,但匹配路径似乎不匹配regex
页面排列在引擎盖下;然而,似乎/en
和/en/不存在
被同等对待,或者后者优先于前者
我想知道以前是否有人遇到过这个问题,也许有解决办法
目前,我有一个通用的404页面,并且所有可用语言都有单独的404页面。在通用404中,我想重定向到特定于语言的404版本。这增加了我想要避免的复杂性
谢谢你的帮助。谢谢 这是一个知道匹配路径中的所有内容的问题
目前,我的解决方法是使用基于语言键的重定向
我有一个默认的404页面和特定语言的404页面,例如/en/404
。
在默认的404页面中,我只需重定向lie,以便:
import { useEffect } from 'react';
import { navigate } from 'gatsby'
// Assuming the urls are structured this way /en/blog/does-not-exist
const getLanguage = (location) => location.pathname.split('/')[1]
const NotFoundPage = ({ location }) => {
useEffect(() => {
navigate(`/${getLanguage(location)}/404`, { replace: false })
}, []);
return null
}
export default NotFoundPage
这不是最好的解决方案,但它现在起作用了。一旦我有更好的解决方案,我将发布更新