【问题标题】:In Gatsby, how do I redirect authenticated users from the homepage / to /app without a flash of content?在 Gatsby 中,如何将经过身份验证的用户从主页 / 重定向到 /app 而没有内容的闪烁?
【发布时间】:2020-09-11 21:31:24
【问题描述】:

我正在尝试为 Web 应用程序实现一种通用的用户体验,其中经过身份验证的用户会自动从主页重定向到应用程序。

例如,在浏览器中输入https://example.com/ 时,如果我没有登录,我会看到主页。但是如果我登录了,我会自动重定向到https://example.com/app/

我目前在我的pages/index.js 中有这个:

if (auth.user) return <Redirect noThrow from="/" to="/app" />;

Redirect 来自@reach/router。

但是,当我这样做时,未经身份验证的主页会在重定向开始之前短暂闪烁。有没有办法做到这一点:

  1. 在重定向发生之前没有闪现的内容并且
  2. 主页仍然是静态生成的,以便 Google 为 SEO 正确编入索引

谢谢!

【问题讨论】:

    标签: reactjs gatsby reach-router


    【解决方案1】:

    您需要您的服务器使用 301–303 响应代码和指向所需 URL 的 Location 标头(例如 /app/)来响应对主页的请求。

    Gatsby 不运行任何类型的服务器来响应生产中的请求,唉,所以如果没有一些重大的黑客攻击,你无法单独使用 Gatsby 来解决这个问题,比如默认隐藏所有内容,这将导致没有内容正在被 Google 编入索引。

    【讨论】:

    • 感谢您的回复科里,我担心这可能是答案。现在这可能是一个 SEO 问题,但我想知道如果我默认隐藏内容然后使用 useEffect 挂钩取消隐藏,Google 爬虫是否足够“智能”以等待页面重新水合。
    • 我怀疑(并希望)Google 爬虫实际上能够处理这种情况,因为我的理解是 Google 爬虫可以运行/呈现 javascript 内容,例如,页面由javascript。
    • @stevenkkim 这不是关于谷歌是否可以索引内容,而是更多关于当你不服务器端呈现内容时它们适用的惩罚。您还可以通过这种方法获得大量缓存命中。我真的不推荐它。
    • 谢谢Corey,我认为你是对的——不值得冒着惩罚的风险。感谢您的反馈!
    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2013-12-15
    • 2021-04-01
    • 2019-04-25
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多