正如你们中的一些人所知,Google现在正在抓取AJAX。到目前为止,实现是优雅的,但至少它仍适用于Yahoo和Bing AFAIK。
上下文:我的网站由Wordpress&amp; HTML5。自定义帖子类型具有树类型的内容,其内容由AJAX驱动。我之前没有使用hashbangs(#!)直到完全理解如何实现它们的解决方案相当“危险”。每个链接作为HREF链接到* site.com / article-one /?tab = first_tab *,显示所选标签(<div>Content...</div>
)的仅内容。像这样:
<a href="http://site.com/article-one/?tab=first_tab" data-tab="first_tab">This First Tab</a>
您可能会注意到,data-tab是JavaScript使用AJAX Get发送的值,它获取相关内容并在容器内呈现。另一方面,服务器获取变量并执行<?php get_template_part('tab-first-tab'); ?>
来传递内容。
关于风险,好吧,我可以看到谷歌和其他搜索引擎将获取* http://site.com/article-one/?tab = first_tab *而不是 http://site.com / article-one / ,使用户访问该URL,而不是显示自动选择标签内容的主页。
现在的问题是避免这种情况的实施。
Hashbang:根据我的学习,我应该这样做。
site.com/article-one/#!first-tab
site.com/article-one/#!first-tab
#!first-tab
,并显示所选标签而非默认标签。现在,对于服务器端实现,这里是我在树林里迷失的地方。
site.com/article-one/?_escaped_fragment_=first-tab
? 我认为我可以将Wordpress在检测到_escaped_fragment_时处理的内容分开。如果要求,例如谷歌,它将显示所有内容加上所选内容,如果没有,这是因为AJAX正在请求它并且只显示内容。那应该是对的吗?
答案 0 :(得分:2)
我要和第三人说话。
由于没有回应,我有一个很好的原因,你不应该这样做。是的,这也是推特抨击他们的原因:
http://danwebb.net/2011/5/28/it-is-about-the-hashbangs
您应该制作正常的URI,而不是做hashbang。例如,带有摘要选项卡的文章应该是“site.com/article/summary”,如果它是弹出的默认文件(或者它已经被请求),它也应该使用pushState()更改为该URI。
如果用户选择标签“exercise”,则当网站通过AJAX加载内容时,URL应该使用pushState()更改为“site.com/article/exercises”,同时您仍然将原始href保持为“ site.com/article/exercises”。如果没有JavaScript,用户仍应看到内容 - 不仅仅是内容,选择了标签的整个页面。
要使其工作,应该对.htaccess进行一些编辑以处理URL中的/ [tab]。