Routing 404页语言键的Gatsby路由问题

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/不存在被同等对待,或者后者优先于前者 我想知道以前是否有人遇到过这个问题,也许有

我正在建立一个支持多种语言的博客。URL包含语言键,例如
/en/blog
。我遇到了404页本地化的问题。这里描述的内容适用于除主页以外的所有路线。主页有以下URL
www.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
这不是最好的解决方案,但它现在起作用了。一旦我有更好的解决方案,我将发布更新