6

我正在努力使基于 AJAX 的网站对 SEO 友好。按照网络教程中的建议,我href为链接添加了“漂亮”属性:<a href="#!site=contact" data-id="contact" class="navlink">контакт</a>并且,在默认情况下使用 AJAX 加载内容的 div 中,为爬虫添加了一个 PHP 脚本:

$files = glob('./pages/*.php'); 

foreach ($files as &$file) {
    $file = substr($file, 8, -4); 

}

if (isset($_GET['site'])) {
    if (in_array($_GET['site'], $files)) {
        include ("./pages/".$_GET['site'].".php");
    }
}

我有一种感觉,一开始我需要额外删除_escaped_fragment_=部分,(...)/index.php?_escaped_fragment_=site=about否则脚本将无法从 URL 获取值,对吗GETsite

但是,无论如何,我怎么知道爬虫将漂亮的链接(带有#!的链接)转换为丑陋的链接(包含?_escaped_fragment_=)?有人告诉我它是自动发生的,我不需要提供此映射,但 Googlebot 的 Fetch 不会向我提供有关 URL 发生情况的任何信息。

4

1 回答 1

14

Google bot 会自动查询?_escaped_fragment_=网址。

所以从www.example.com/index.php#!site=about 谷歌机器人会查询:www.example.com/index.php?_escaped_fragment_=site=about

在 PHP 网站上,你会得到它$_GET['_escaped_fragment_'] = "site=about"

如果您想获得“网站”的价值,您需要执行以下操作:

if(isset($_GET['_escaped_fragment_'])){
    $escaped = explode("=", $_GET['_escaped_fragment_']);
    if(isset($escaped[1]) && in_array($escaped[1], $files)){
          include ("./pages/".$escaped[1].".php");
    }
 }

看一下文档:

https://developers.google.com/webmasters/ajax-crawling/docs/specification

于 2013-09-26T15:34:34.880 回答