可以大量使用AJAX的页面是否也适合搜索引擎?

我想我的意思是,如果我创建一个使用AJAX加载一些内容的网站,我也希望搜索引擎找到 – 如果我让页面工作sans-javascript(比如,当javascript不存在时,链接转到site.com?c=somecontent而不是用$("#content").load("somecontent.html");调用函数$("#content").load("somecontent.html"); ),搜索引擎是否会遵循非JavaScript链接并能够索引网站好吗?

我想如果跟随搜索引擎链接到?c=somecontent链接的启用javascript的浏览器仍然可以正常使用该网站,那么这可行?c=somecontent ,对吧?

这是一项非常具有挑战性的工作,或者如果网站结构合理,是否可以相对容易地完成?

如果你的链接看起来像这样:

  Some link  

它将优雅地降级,搜索引擎将很高兴。

您遇到的一个问题是,当启用了Javascript的人导航您的网站时,地址栏中的位置将不会更改。 这可以通过让onclick函数设置window.location.hash来根据访问者所在页面更新url的哈希部分来克服。 然后,在加载每个完整页面时,脚本应检查散列是否与当前页面匹配,如果不匹配,则使用AJAX调用切换到散列指示的页面。

除了以前的答案。

您可以根据它检查请求是否通过AJAX显示结果(即如果是AJAX则为JSON数据,如果不是则为完整的html页面)。 在PHP检查脚本看起来像

  function isAjax() { return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')); } 

当然,您将在服务器端(Ruby / Python / ASP)使用技术解决方案。

只是补充一下:如果你已经注意到Facebook的工作方式 – 如果启用了Javascript,则AJAX会起作用,如果Javascript被禁用(例如机器人),它仍然可以工作。

在你的链接中做这样的事情(例如分页):

 2  

因此关键是设计AJAX在现代浏览器中的工作方式,但是当您禁用Javascript时页面仍然有效。

最好的方法是在没有任何ajax的情况下构建网站并应用seo实践。 然后当非ajax版本工作时,将一个名为“dynamic-link”的类添加到你想要成为ajax-link的链接。 并处理这些链接上的点击事件。 所以当机器人抓取网站时,他们会有一些东西可以依赖。

这可能会有问题,因为你最终会得到一个页面的小片段进入索引。

如果你可以侥幸成功,那么使用普通的旧DHTML“伪造”ajax要容易得多。

 
Some content
Some other content

现在你已经将所有内容都显示给搜索引擎,所有内容都在相同(且正确)的URI上,但对于启用了Javascript的用户,它就像AJAX解决方案一样(但是在初始加载后速度更快,速度稍慢) )。

现在,如果你有一些TON的内容,你将不得不考虑更聪明的东西。 但是,如果您的所有内容权重相对较小(不要忘记确保您的服务器gzip编码内容),则此设置更可取。

否则,如果你有数百千字节(或更多)的文本内容,你将不得不变得更加狡猾。 你最初的想法非常正确。

  LinkyText  

通常会按照您的想法行事。 当然,问题是’https://stackoverflow.com/some/page.html’最终会出现在搜索标记中。 您可以尝试做棘手的服务器端事务(比如检查引用并重定向回“主页”),但我不相信这不是潘多拉的盒子。

希望有人会提出另一个解决这个问题的答案。 如果我想到了什么,我会编辑这个。

看一下单页界面宣言 ,困难的部分是向爬虫机器人提供“HTML快照”。