我阅读了以下内容,并尝试将此方案应用于我运行WordPress的网站:http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html
如果您访问我的网站http://www.visualise.ca/ 您将看到它在主页中加载帖子,url变为http://visualise.ca/#!/anne-au-cherry 加载此帖子时。相同内容的静态版本可用于爬虫http://visualise.ca/anne-au-cherry 但是如果访问者使用浏览器访问它,他将被重定向到http://visualise.ca/#!/anne-au-cherry (这是通过javascript完成的)。
为了给爬虫提供所需的?_escaped_fragment_=
我使用了我在网上发现的WordPress黑客:http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request 现在GoogleBot可以看到我的AJAX页面的内容。我以为一切都结束了。
但是当我粘贴一个帖子链接到Facebook(即)时,它无法读取页面的内容,所以我猜我的网站并没有真正尊重Google文档中描述的方案,因为Facebook支持它(如果你粘贴http://twitter.com/#!/gablabelle 它会起作用)。既然我在使用jQuery。获取我的hashbang(#!)的地址插件我访问了他们的网站并下载了他们的示例文件,以查看他们的文件和我的文件之间的差异,并意识到他们可能正在使用php函数创建所需的HTML快照:https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php 因为这就是为什么,我想,Facebook不能读我的。
<?php
error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
$fragment = $_REQUEST[\'_escaped_fragment_\'];
$file = \'data/\' . (isset($fragment) && $fragment != \'\' && $fragment != \'/\' ? preg_replace(\'/\\//\', \'\', $fragment) : \'home\') . \'.xml\';
$re = \'/(^<[^>]*>)|(\\n|\\r\\n|\\t|\\s{2,4})*/\';
$handle = fopen($file, \'r\');
if ($handle != false) {
$content = preg_replace($re, \'\', fread($handle, filesize($file)));
fclose($handle);
} else {
$content = \'Page not found!\';
header(php_sapi_name() == \'cgi\' ? \'Status: 404\' : \'HTTP/1.1 404\');
}
?>
因此,我的猜测是,我可能会使用类似的php函数来服务HTML快照,而不是使用WordPress hack,但我需要将其适应WordPress。问题是我不是程序员,到目前为止我已经尽了最大努力。
我的帖子采用以下格式:http://visualise.ca/#!/anne-au-cherry 静态版本可在http://visualise.ca/anne-au-cherry (安妮·奥切里(AnneAuCherry)是这篇文章的主角,根据我们查看的页面的不同而有所变化)。
所以我的问题是,是否有人可以确认我走的是正确的道路,如果可能的话,还可以帮助创建php函数?
非常感谢您的时间和帮助!
最合适的回答,由SO网友:Gab 整理而成
实际上,我所做的是不要像幽灵肯尼建议的那样使用hashbang。
将jQuery地址插件与$一起使用。住址state(value)方法,用于设置HTML5状态管理中使用的网站的基本路径和$。住址value(value)方法为了设置当前的深度链接值,我可以随心所欲。
http://visualise.ca/
帖子(点击图像缩略图)是通过AJAX加载的,同时URL也会发生变化,帖子本身使用相同的永久链接结构,因此完全可以爬行。
唯一的问题是,我认为(需要验证)仍然可以看到hashbang的旧浏览器。
因为我不是开发人员,所以我花了很多时间来理解。:/但我现在对结果很满意;-)
jQuery地址:http://www.asual.com/jquery/address/
SO网友:WraithKenny
明确地AVOID 使用“hashbang”(“!#”)使AJAX支持的WordPress站点可爬行。
你真的不想在WordPress网站上使用“hashbang”方法。
“!#”更像是针对cannot 为其AJAX版本提供静态模拟。谷歌一般不推荐使用它,除非没有其他选择。
在WordPress中实现hashbang系统没有任何好处。WordPress的前端AJAX解决方案应该围绕现有的url方案工作(没有哈希,没有爆炸)。
Summary: WordPress is naturally crawlable; simply don\'t break it using hash-bangs.