3

我浏览过 Google 的文档和无数关于这个主题的博客文章,根据日期和来源,似乎有一些相互矛盾的信息。请把你的智慧照耀在这个卑微的农民身上,一切都会好起来的。

我正在免费建立一个网站,其中很大一部分观众来自互联网连接较差的非洲国家,而客户负担不起任何体面的基础设施。因此,我决定将所有内容都作为静态 html 文件提供服务,如果 javascript 可用,我会在用户单击导航链接时将页面内容直接加载到 DOM 中,以防止加载整个页面的开销。

我的客户端路由如下所示:

//domain.tld/#!/page

我的第一个问题是;googlebot 是否将其翻译为:

//domain.tld/_escaped_fragment_/page还是//domain.tld/?_escaped_fragment_=/page

我在 php 中制作了一个简单的服务器端路由器,它为 googlebot 构建请求的页面,我的计划是重定向//d.tld/_escaped_fragment_/page//d.tld/router/page.

但是当使用 Google 的“Fetch as Googlebot”(我可能是第一次添加)时,它似乎无法识别页面上的任何链接。它只是返回“成功”并向我显示主页的 html(更新:当将 Fetch as Googlebot 指向//d.tld/#!/page它时,它只返回主页的内容,而不做任何 _escaped_fragment_ 魔术)。这引出了我的第二个问题:

使用 hashbang 链接时,我是否需要遵循特定的语法,以便 googlebot 抓取它们?

我的链接在 HTML 中如下所示:

    <a href="#!/page">Page Headline</a>

Update1:​​因此,当我要求 Fetch as Googlebot 将//d.tld/#!/page其显示在访问日志中时:"GET /_escaped_fragment_/page HTTP/1.1" 301 502 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"但它似乎不遵循我设置的 301,而是显示主页。我应该改用302吗?这是我正在使用的规则:RedirectMatch 301 /_escaped_fragment_/(.*) /router/$1


Update2:我改变了我的计划,并将 googlebot 作为我非 JavaScript 后备策略的一部分。所以现在所有的链接都指向路由器/router/page,然后/#!/page/用javascript更改为onLoad。我会暂时保留这个问题,以防有人有一个可以帮助其他人的绝妙解决方案。

4

0 回答 0