【问题标题】:SEO and ajax loaded content linkSEO 和 ajax 加载的内容链接
【发布时间】:2013-05-19 22:59:37
【问题描述】:

我需要一些帮助来更好地理解 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 使用从 website.com/single.php?blog_no=12 加载的容器加载我的 index.php 页面

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

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

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

【问题讨论】:

    标签: php ajax dynamic seo


    【解决方案1】:

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

    首先,Google 主要通过两种方式发现您网站上的网页:

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

    无论如何,除非您明确告诉 Google 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),您应该不关注这些链接,或设置后备页面

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

    【讨论】:

    • 感谢您的回答。我的网站中存在像“website.com/12”这样的链接。由于我的 .htaccess(我将代码放在我的问题中),这个地址已经在重写。当我测试我的链接时,一切都很好。我在那里看到了一些数据,没有任何错误。因此,当 google bot 抓取我的网站时,它将索引它在我的页面中看到的链接。所以我认为我需要更改我的代码,以便在我的页面中有硬编码的链接:href="#!12"
    • 是的,如果链接发送错误/丢失的页面,您的选择是添加 rel="nofollow" 到链接,或者重新编码以使它们包含正确的 URL 并且可以被搜索引擎跟踪机器人。
    • 我不能使用 rel="nofollow" 因为谷歌机器人不会看到我所有的动态内容(所以我所有的单个帖子内容)。我读到只有在 href 链接中有 hashbang url 时,googlebot 才能抓取 ajax 链接。使用我的代码和 href 规则,不存在丢失或错误的页面(所有链接始终加载 single.php 页面,如果激活了 javascript,则将其加载到 index.php 中)。
    • 啊,我没有意识到 Google 现在正在抓取哈希链接。在这种情况下是的,看起来谷歌现在会喜欢你的href="#!12链接,只要确保你按照here的规定告诉谷歌它需要的一切@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多