锚定AJAX和SEO解决方法?

时间:2009-11-11 18:35:32

标签: javascript ajax seo graceful-degradation hashchange

你们都知道如何使用那些300ms触发器构建AJAX站点来检查URL中的锚点(哈希链接),然后使用AJAX加载正确的页面。但是,这些锚链接对搜索引擎来说并不算什么=(

我想过做一些解决方法。所有JS代码都保持不变,但是,这个小东西(我是JQuery,抱歉):

$('a').live("click",function(){
    var lnk = $(this).attr("href");
    document.location.hash = lnk;
    return false;
})

然后,用纯链接替换正文中的锚链接,为非JavaScript用户和搜索引擎构建相应的普通页面(仍包含所有JS代码)。对于普通访问者,您可以将普通链接转换为哈希值,并立即加载AJAX内容。对于那些试图加载通过搜索引擎找到的某些页面的人 - 他们会,然后访问者将继续使用ajax导航......不知何故(记住,那些普通的直接页面仍然包含JS代码)。

我只是想确保我的假设是正确的。是吗?

更新:不好的是,当用户直接进入某个内部页面时为ex。 / portfolio 地址,然后他会继续 / portfolio#contacts 或类似的网址,这些网址不是那么漂亮,但仍在工作(我的意思是 / portfolio#contacts < / em>会显示联系人。)

3 个答案:

答案 0 :(得分:1)

这似乎不是一个好的方法,主要是因为你最终会为每个链接的click事件触发该功能,甚至是你想要使用您的AJAX方法加载内容,例如链接到其他网站或javascript:...

如果您将所有AJAX-y链接放在同一个类下或使用其他属性来区分它们然后调整您在那里使用的jQuery选择器,那么它将起作用并且这将是一个很好的方法,因为不仅它是否适合搜索引擎优化,但它也提供了优雅的降级,即,即使用户在不允许使用JavaScript的环境中运行,您的用户仍然可以访问内容。

除此之外,如果SEO是您唯一关心的问题,您可以在网上搜索sitemap.xml文件是什么以及如何使用它。维基百科有article on it可能值得一读。

答案 1 :(得分:0)

听起来非常合理......只是我建议你的300ms计时器上的回调也会在你上面的事件中被调用,这样你点击一个链接就会得到一个即时结果(而且用户也可以转到链接)地址栏并获得相同的效果)

答案 2 :(得分:0)

嘿,伙计,你可能想看看jQuery Ajaxy。它优雅地将网站升级为丰富的ajax应用程序,因此您的网站仍适用于SEO和Javascript禁用用户。

您可以在操作in this upcoming website中看到此功能。请注意如果网站不是Ajax应用程序,所有链接都是相同的 - 如果您右键单击并在新窗口中打开它们仍然有用!

此功能在其演示页面中详细说明。您还可以在其中找到其他示例和使用说明: http://www.balupton.com/sandbox/jquery-ajaxy/demo/

整体上使用它非常简单明了(特别是考虑到它允许你做什么!),并且支持非常棒。