hashHistory、_escaped_fragment_ 和 Google
hashHistory, _escaped_fragment_, and Google
我使用 React Router 已经有一段时间了,我一直在使用 hashHistory
来处理路由。在某些时候,我打算将应用程序转换为 browserHistory
,但我很好奇为什么 Google 的 "Fetch as Google" 功能似乎对根路由以外的任何东西都不起作用(/
)。很明显,它正在渲染某些东西,而不是服务器未处理的路由。 (下图)
我看到Google有deprecated their AJAX crawling scheme,这让我相信我不再需要处理?_escaped_fragment_=
,但即使如此,我也无法获得Google 渲染任何其他路线。
例如,站点是 www.learnphoenix.io
,课程列在 www.learnphoenix.io/#/phoenix-chat/lessons
下。然而,网站管理员中 Google 的 Fetch as Google 功能重定向到主页并且只呈现主页。使用 _escaped_fragment_
会导致相同的结果。
有没有办法允许 Google 使用 hashHistory
为我的网站编制索引,或者我是否必须接受只有我的主页才会被编入索引,直到我切换到 browserHistory
?
默认情况下,google 似乎忽略了 url 片段 (#)。根据这篇可能过时的文章,使用 #!将告诉 google 这些片段可用于定义不同的规范页面。
https://www.oho.com/blog/explained-60-seconds-hash-symbols-urls-and-seo
值得一试,尽管 ReactRouter 不支持 Hashbang,因为它应该被弃用。
更好的选择可能是硬着头皮在你的 react-router 中使用 browserHistory
(pushState)。问题在于,如果您是 运行 静态无服务器应用程序,像 /phoenix-chat/lessons
这样的路径将 return 404。在 AWS 中,也有一个 hack 解决方案。将您的 404 页面设置为您的应用索引页。
http://blog.boushley.net/2015/10/29/html5-deep-link-on-amazon-s3/
感觉很脏,但还是值得一试。希望这个答案对您有所帮助!
我使用 React Router 已经有一段时间了,我一直在使用 hashHistory
来处理路由。在某些时候,我打算将应用程序转换为 browserHistory
,但我很好奇为什么 Google 的 "Fetch as Google" 功能似乎对根路由以外的任何东西都不起作用(/
)。很明显,它正在渲染某些东西,而不是服务器未处理的路由。 (下图)
我看到Google有deprecated their AJAX crawling scheme,这让我相信我不再需要处理?_escaped_fragment_=
,但即使如此,我也无法获得Google 渲染任何其他路线。
例如,站点是 www.learnphoenix.io
,课程列在 www.learnphoenix.io/#/phoenix-chat/lessons
下。然而,网站管理员中 Google 的 Fetch as Google 功能重定向到主页并且只呈现主页。使用 _escaped_fragment_
会导致相同的结果。
有没有办法允许 Google 使用 hashHistory
为我的网站编制索引,或者我是否必须接受只有我的主页才会被编入索引,直到我切换到 browserHistory
?
默认情况下,google 似乎忽略了 url 片段 (#)。根据这篇可能过时的文章,使用 #!将告诉 google 这些片段可用于定义不同的规范页面。
https://www.oho.com/blog/explained-60-seconds-hash-symbols-urls-and-seo
值得一试,尽管 ReactRouter 不支持 Hashbang,因为它应该被弃用。
更好的选择可能是硬着头皮在你的 react-router 中使用 browserHistory
(pushState)。问题在于,如果您是 运行 静态无服务器应用程序,像 /phoenix-chat/lessons
这样的路径将 return 404。在 AWS 中,也有一个 hack 解决方案。将您的 404 页面设置为您的应用索引页。
http://blog.boushley.net/2015/10/29/html5-deep-link-on-amazon-s3/
感觉很脏,但还是值得一试。希望这个答案对您有所帮助!