使用托管在 S3 上的 react-router v3 的 Create-react-app 无法使用 "fetch as google"

Create-react-app with react-router v3 hosted on S3 not working with "fetch as google"

我目前有一个使用 create-react-app 构建的 React 应用程序,使用通过 CloudFront 托管在 S3 上的 react-router v3。该应用程序是在别处托管的 PHP api 的视图。 react-router 设置为使用 browserHistory。

目前我们正在尝试设置该应用程序,以便它可以被 google 抓取,并且正在使用 google 网站管理员工具和 "fetch as google".

进行测试

主页抓取没有问题,但任何内部页面甚至无法呈现,returns "not found"。

当尝试直接导航到新选项卡中的路由(但按预期加载页面)时,该站点在控制台中仍然显示 404 错误。

到目前为止我尝试过的: 1) 在 googlebot 的入口点导入 babel-polyfill。 2) 设置 CloudFront 错误页面以将 404 响应发送到 /index.html 和 200 3) 将 s3 的错误页面设置为 index.html

根据我的阅读,google 不应该要求服务器端呈现只是为了抓取网站(SEO 不是我们关心的问题),但 none 我的其他解决方案网上找的好像可以解决问题。

我是否需要让整个应用程序能够处理 SSR,像这样简单的事情:https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#serving-apps-with-client-side-routing,或者是否有其他我可以尝试的东西可以让页面可抓取而无需在服务器端进行任何设置?

如能提供更多资源的帮助或指导,我们将不胜感激!

我发现解决方案非常简单。在云端分发中,将自定义错误页面设置为将 404 错误转到目标“/”,http 响应为 200。

其他很多人都把目标贴成“/index.html”,如果不行,试试上面的方法。