2

我需要一些帮助来更好地理解 ajax 加载内容的 SEO。

这里的上下文:

我有一个 single.php,其中为每个帖子动态生成内容(使用 php 和 xml 数据库)。

我通过 ajax 在我的 index.php 页面中加载了这个 single.php 的容器。这里的工作脚本:

$.ajaxSetup({cache:false});
    $(".phplink").click(function(){
        var post_link = $(this).attr("href");
        window.location.hash = "!"+ post_link ;
        $("#ajaxify_container").html("loading...");
        $("#ajaxify_container").load('single.php?blog_no='+post_link+' #container');
    return false;
}); 

$(window).hashchange( function(){
var hash = window.location.hash;
var hash = location.hash.replace("#!","");

    if(hash != '') { 
        var post_link = hash;
        $("#ajaxify_container").html("loading...");
        $("#ajaxify_container").load('single.php?blog_no='+post_link+' #container');    
    } 
    else {
        $.get(hash, function (data) {
        $("#ajaxify_container").html('');   
        });

    }
});

$(window).hashchange();

index.php 中的链接示例(当我单击 url website.com/#!12 中的链接时):

<a class="phplink" href="12">Post 12</a> 

在我的 .htaccess 文件中,我添加了以下行以正确重写 url:

Options +FollowSymLinks
RewriteEngine on
RewriteRule /([0-9]+)$ /single.php?blog_no=$1

一切正常...(顺便说一句,我的 single.php 是 SEO 友好的“单独”并且无需 javascript 即可工作)

但是,通过像这样使用 ajax 和动态 php 页面,它仍然对 SEO 友好吗?我知道ajax很难被爬取。使用 ajax 内容获得良好(不是最好的,正确的)SEO 的最佳方式是什么?

关于链接的结构,我不完全了解 google bot 会抓取什么。因为有href="12",所以有活力href="/single.php?blog_no=12"。在网络浏览器中:

  • website.com/single.php?blog_no=12website.com/12仅加载我的 single.php 页面
  • website.com/#!12使用从加载的容器加载我的 index.php 页面website.com/single.php?blog_no=12

当然,我只希望 google 抓取 hashbang url ......

(编辑:如果我通过右键单击在新选项卡中打开链接,它会加载 single.php(我不想要)。这似乎是一种正常行为,但......我想阻止它)

对不起我的英语,我是法国人。

4

1 回答 1

1

从 SEO 的角度来看,动态加载的内容通常很难正确。你的描述有点混乱,但我想我知道你在找什么。

首先,谷歌主要通过两种方式来查找您网站上的页面:

  • 站点地图(Google 喜欢 XML 站点地图)- 告诉 Google 将您网站上的每个页面编入索引的文件
  • 链接 - 谷歌将跟踪它试图索引的页面上的任何内部链接,除非它们被标记为rel="nofollow"
  • 还有一些链接和其他一些东西,但为了解释的目的......让我们忽略这些。

无论如何,除非你明确告诉谷歌website.com/single.php?blog_no=12存在,否则很难找到它。老实说,我不确定 Google 将如何处理类似的事情href="12",它可能会尝试跟踪该链接website.com/12,如果那里没有任何内容,可能会影响您的排名。所以最后,您可能想要添加rel="nofollow"到您的 AJAX 触发链接。

处理 AJAX 和动态加载内容的一个好方法是确保后备设置到位,例如,如果您href="single/12设置了使用 AJAX 加载某些内容的设置,您还应该有一个不使用 JS/AJAX 的后备页面. 这确保了搜索引擎机器人和没有 Javascript 的用户都可以看到该内容,否则它不会在其他任何地方可见。

最后一个小消息,如果您在http://www.dnsqueries.com/en/googlebot_simulator.php之类的东西上测试您的链接并且它们出现错误或空白页面(搜索引擎机器人不使用 javascript),您应该 nofollow这些链接,或设置后备页面

没关系……这是最后一件事。您应该在 htaccess 重写中更进一步,以使您的 URL 完全清除查询字符串。例如website.com/single/blog/12,它比website.com/single.php?blog_no=12SEO 和用户都好。

于 2013-05-19T23:58:56.643 回答