带有Netlify重定向的Gatsby客户端路由

带有Netlify重定向的Gatsby客户端路由,gatsby,server-side-rendering,netlify,Gatsby,Server Side Rendering,Netlify,我有一个盖茨比计划,我正在努力实现以下目标 当用户导航到/movies时,它将显示一个电影列表 当用户单击列表中的项目时,它将导航到/movies/:movieId,以显示该电影的详细信息 以下是我在Netlify上遇到的问题 如果用户直接访问/movies/:movieId,或进行硬重新加载。然后,在页面实际加载之前会出现404闪烁 以下是我尝试的解决方案: 安装gatsby插件netlify以处理\u重定向 然而,现在不是404的flash,而是/movies页面的flash 这就是我想要实

我有一个盖茨比计划,我正在努力实现以下目标

  • 当用户导航到
    /movies
    时,它将显示一个电影列表
  • 当用户单击列表中的项目时,它将导航到
    /movies/:movieId
    ,以显示该电影的详细信息
  • 以下是我在Netlify上遇到的问题

  • 如果用户直接访问
    /movies/:movieId
    ,或进行硬重新加载。然后,在页面实际加载之前会出现404闪烁
  • 以下是我尝试的解决方案:

  • 安装
    gatsby插件netlify
    以处理
    \u重定向
  • 然而,现在不是404的flash,而是
    /movies
    页面的flash
  • 这就是我想要实现的目标

  • 每个
    /movies/:movieId
    页面都有一个加载状态,因此我想在用户直接访问路由时显示该状态
  • 我能想到的唯一解决方案是创建另一个路由
    /loading
    ,并在netlify中设置以下重定向规则

    /movies/*  /loading 200
    

    但我也不希望用户能够访问
    /loading
    页面。有什么方法可以让我这样做吗?

    您需要调试这个问题,因为进入现有页面时出现404页面的flash并不常见

    关于尝试的解决方案:
    gatsby plugin netlify
    通过创建自定义的
    \u redirects
    文件来处理重定向,但是,如果您想添加自己的或覆盖它们,则需要在根目录中创建一个
    \u redirects
    文件并部署它。只需添加:

    /movies/*   /movies
    
    请注意,重定向的默认状态为
    301
    。您代码的
    200
    是一个毫无意义的成功。你可以省略它。您可以查看有关的更多信息


    更清洁的解决方案是设置一个处理加载组件的React状态。默认情况下,它将被设置为
    true
    (并且可见),一旦加载页面,您就可以
    false
    加载它。这样,您就不会创建无用的路由/页面,而是在同一页面上处理加载(改进SEO)。在那里,如果加载状态设置为true,您可以在X秒内手动重定向用户来玩它

    感谢您的响应。
    /movies
    页面和
    /movies/:movieId
    页面具有不同的布局。当用户直接访问该url时,是否有方法显示单个电影页面的加载状态?我将无法使用
    createPage
    操作,因为我不知道
    路径
    。使用
    createPage
    方法的想法就是为任何内容创建动态路径,而不考虑路径。您可以设置加载组件,并根据上一页的不同将其删除或保留(如果需要,还可以重定向)<代码>和
    位置
    允许您执行此操作。