在 Gatsby 中,如何在不显示内容的情况下将经过身份验证的用户从主页 / 重定向到 /app?
In Gatsby, how do I redirect authenticated users from the homepage / to /app without a flash of content?
我正在尝试为 Web 应用程序实现通用用户体验,其中经过身份验证的用户会自动从主页重定向到应用程序。
例如,在浏览器中输入 https://example.com/
时,如果我没有登录,我会看到主页。但是如果我登录了,我会自动重定向到 https://example.com/app/
目前我的 pages/index.js
中有这个:
if (auth.user) return <Redirect noThrow from="/" to="/app" />;
其中 Redirect
来自@reach/router.
但是,当我这样做时,未经身份验证的主页会在重定向开始之前短暂闪烁。有没有办法做到这一点:
- 在重定向发生之前没有内容闪烁并且
- 主页仍然是静态生成的,因此 Google 为 SEO
正确索引了它
谢谢!
您需要您的服务器使用 301–303 响应代码和指向所需 URL 的 Location
header 来响应主页请求(例如 /app/
).
Gatsby 没有 运行 任何类型的服务器来响应生产中的请求,唉,所以你不能单独使用 Gatsby 解决这个问题,除非有一些重大的黑客攻击,比如默认隐藏你的所有内容,这将导致没有内容被 Google.
索引
我正在尝试为 Web 应用程序实现通用用户体验,其中经过身份验证的用户会自动从主页重定向到应用程序。
例如,在浏览器中输入 https://example.com/
时,如果我没有登录,我会看到主页。但是如果我登录了,我会自动重定向到 https://example.com/app/
目前我的 pages/index.js
中有这个:
if (auth.user) return <Redirect noThrow from="/" to="/app" />;
其中 Redirect
来自@reach/router.
但是,当我这样做时,未经身份验证的主页会在重定向开始之前短暂闪烁。有没有办法做到这一点:
- 在重定向发生之前没有内容闪烁并且
- 主页仍然是静态生成的,因此 Google 为 SEO 正确索引了它
谢谢!
您需要您的服务器使用 301–303 响应代码和指向所需 URL 的 Location
header 来响应主页请求(例如 /app/
).
Gatsby 没有 运行 任何类型的服务器来响应生产中的请求,唉,所以你不能单独使用 Gatsby 解决这个问题,除非有一些重大的黑客攻击,比如默认隐藏你的所有内容,这将导致没有内容被 Google.
索引