我制作单页应用程序。我读过以下文章create-crawlable-pushstate。 我使用hashbang运行问题。这似乎对我来说就像一个解决方案。但我不太确定我是否会在那里发生什么。以下是文章中的一个例子:
// We're using jQuery functions to make our lives loads easier
$('nav a').click(function(e) {
url = $(this).attr("href");
//This function would get content from the server and insert it into the id="content" element
$.getJSON("content.php", {contentid : url},function (data) {
$("#content").html(data);
});
//This is where we update the address bar with the 'url' parameter
window.history.pushState('object', 'New Title', url);
//This stops the browser from actually following the link
e.preventDefault();
}
这很棒,但google将如何知道内容可用。 getJson
函数是异步的,因此在加载内容之前将推送状态。我的想法是,我在加载内容后调用pushstate来显示链接已准备就绪。
答案 0 :(得分:2)
Google并不关心JavaScript。它只看到了URL。
您的服务器仍需要为每个给定的URL生成适当的页面。
使用JS:
http://example.com/whatever/whatever/whatever
/whatever/whatever/whatever
href="/something/something/something
Ajax</li>
<li>
preventDefault` /something/something/something
,而不重新加载整个页面没有JS:
http://example.com/whatever/whatever/whatever
/whatever/whatever/whatever
href="/something/something/something
Ajax</li>
<li>
preventDefault` /something/something/something
(因为没有JS可以触发preventDefault
)之后,有人直接前往/something/something/something
,同样适用。服务器直接提供/something/something/something
的内容。然后当点击链接时(如果JS可用),JS会执行Ajax。