【问题标题】:SEO Safe Anchor Links With jQuery Dynamic Content带有 jQ​​uery 动态内容的 SEO 安全锚链接
【发布时间】:2012-06-26 05:16:28
【问题描述】:

所以... 这是在您的网站上使用内部链接的安全方式吗?通过这样做,我有索引页面生成通常的 php 内容部分并将其交给 div 元素。

主要问题: google 是否仍会使用这种方法为页面编制索引?常识告诉我确实如此。但只要仔细检查并将其留在这里作为基本示例,如果是的话。就像这样。

仅供参考


服务器端

if (isset($_REQUEST['page'])) {$pageID=$_REQUEST['page'];} else {$pageID="home";}
if (isset($_REQUEST['pageMode']) && $_REQUEST['pageMode']=="js") {
  require "content/".$pageID.".php";
  exit;
} // ELSE - REST OF WEBSITE WILL BE GENERATED USING THE page VARIABLE

链接

<a class='btnMenu' href='?page=home'>Home Page</a>
<a class='btnMenu' href='?page=about'>About</a>
<a class='btnMenu' href='?page=Services'>Services</a>
<a class='btnMenu' href='?page=contact'>Contact</a>

Javascript

$(function() {
    $(".btnMenu").click(function(){return doNav(this);});
});

function doNav(objCaller) {
  var sPage = $(objCaller).attr("href").substring(6,255);
  $.get("index.php", { page: sPage, pageMode: 'js'}, function(data) {
    ("#siteContent").html(data).scrollTop(0);
  });
  return false;
}

如果有任何错误,请原谅我,因为刚刚从我的脚本中复制并粘贴,然后删除了一堆垃圾以简化它,因为它仍在原型设计/白板项目中。所以是的,它现在看起来有点讨厌.

原因: 主要原因是带宽和速度,这将允许其他脚本更好地运行和控制站点/应用程序,是的,它需要通过一些编码来锁定。 --

更多示例——在顶部插入 PHP

<?php 
  // PHP CODE HERE
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="scripts.js"></script>
</head>
<body>
  <div class='siteBody'>
    <div class='siteHeader'>
        <?php
          foreach ($pageList as $key => $value) {
            if ($pageID == $key) {$btnClass="btnMenuSel";} else {$btnClass="btnMenu";}
              echo "<a class='$btnClass' href='?page=".$key."'>".$pageList[$key]."</a>";
          }
        ?>
      </div><div id="siteContent"  style='margin-top:10px;'>
        <?php require "content/".$pageID.".php"; ?>
      </div><div class='siteFooter'>
    </div>
  </div>
</body>
</html>

【问题讨论】:

  • 旁注...不要使用_REQUEST。您应该知道您的用户正在请求什么方法。让它们可以互换是个坏主意。
  • 我讨厌这个。从HCI 的角度来看,如果您不花很多精力让浏览器以与常规页面加载(微调器、停止按钮、后退按钮)相同的方式excatly 运行,这将是可怕的,地址栏,“书签”,缓存等)。大多数使用 Ajax 内容加载的网站都以这种或另一种方式失败,因此很难知道您是否正确单击了链接,或者在按下后退按钮时将用户留在了某个未定义的位置。
  • 请求 - 我知道,就像我说的那样......目前正在考虑这个想法......尚未测试......至于浏览器与按钮的兼容性我同意......还有其他事情在这里考虑但没有放入。请理解这只是 SEO 方面的一个基本示例/问题。
  • 2 年多之后,这对于快速复制粘贴非常有用。

标签: php jquery seo navigation bandwidth


【解决方案1】:

不,这对搜索引擎不友好。您正在使用 JavaScript 从服务器获取内容并将其显示在页面上。尽管搜索引擎在处理 JavaScript 生成的内容方面做得越来越好,但它们仍然无法处理这个问题(除非您遵循 Google 的可抓取 Ajax 标准,但上个月网站已经远离了这一标准,尤其是 Twitter)。

所以这对 SEO 不利。另外,您节省的带宽并没有您想象的那么多。节省的费用很少,而且带宽非常便宜,这完全没有必要。事实上,您花费更多的钱通过执行正常操作(页面加载)来使您的网站无法访问,并通过使用 JavaScript 来执行此操作使其变得复杂,这样您就可以节省带宽成本。

是的,这对搜索引擎很友好,是渐进增强的一个很好的例子。因为链接仍然是可抓取的,并且加载与 JavaScript 相同的内容,所以谷歌和任何没有启用 JavaScript 的用户仍然可以很好地找到内容。使用 JavaScript 的用户将获得更快页面加载的额外好处,因为他们在单击链接时无需等待整个页面加载。

【讨论】:

  • 网站本身还是使用默认的内容,例如?page=about会默认显示about页面..headers/footers等随page变量调整
  • 如果链接在没有 javascript 的情况下独立工作,那么它们有什么不“SEO 安全”的?
  • 因此退出;评论,网站的其余部分在下面.. 这纯粹是一个标题脚本
  • 我只是想确认谷歌在这种锚点处理方面不会乱来或任何事情
  • 好的,已经更新并将清理它以供......使用菜单类更改器的基本示例
【解决方案2】:

目前尚不清楚 SEO 的影响是什么。谷歌现在解释了一些 javascript。所以有可能——但不能保证——谷歌仍然可以阅读这些链接。通常人们想要隐藏“关于”等页面的链接。因此,如果 Google 无法阅读这些链接,您实际上可能会获得 SEO 优势。也就是说,更多的 pagerank 会集中在您关心的页面上。出于这个原因,一些大型网站实际上使用 javascript 生成指向此类页面的链接。

上线后,您可以通过查看网站管理员工具中关于我们页面的链接来检查 Google 是否找到了这些链接。

【讨论】:

    【解决方案3】:

    我认为锚点没问题,但您应该改进服务器端脚本,因为它只输出主要内容,而不是整个页面。

    通过检查 $_SERVER['HTTP_X_REQUESTED_WITH'] 您可以区分 ajax 调用和“正常”请求。这是 jquery 自动设置的标题。

    如果进行了 ajax 调用,则输出主要内容,否则输出所有内容:doctype、html-tags 以及它们之间的所有有趣的东西。所以每个人都可以在没有 javascript 的情况下获取内容,甚至是爬虫和其他访问者。

    更多信息:http://davidwalsh.name/detect-ajax

    示例:

    <?php
        $pageID = isset($_POST['page'])
            ? $_POST['page']
            : "home";
    
        if ( !$_SERVER['HTTP_X_REQUESTED_WITH'] ) {
            require('content/components/header.php');
        }
    
        require "content/" . $pageID . ".php";
    
        if ( !$_SERVER['HTTP_X_REQUESTED_WITH'] ) {
            require('content/components/footer.php');
        }
    
    ?>
    

    带有内容/组件/header.php:

    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="style.css" />
            <script type="text/javascript" src="jquery.js"></script>
            <script type="text/javascript" src="scripts.js"></script>
        </head>
        <body>
            <div class='siteBody'>
                <div class='siteHeader'>
                    <?php
                        foreach ($pageList as $key => $value) {
                            if ($pageID == $key) {$btnClass="btnMenuSel";} else {$btnClass="btnMenu";}
                            echo "<a class='$btnClass' href='?page=".$key."'>".$pageList[$key]."</a>";
                        }
                    ?>
                </div>
            <div id="siteContent"  style='margin-top:10px;'>
    

    和内容/组件/footer.php:

            </div>
        <div class='siteFooter'></div>
        </div>
    </body>
    </html>
    

    【讨论】:

    • 我意识到可以检查标题,只是试图展示一个一般示例并确认我的想法。 php 是一个简单的 if then 抓取早期内容并退出 else 继续构建主页和内容
    • 旁注:pageMode 也以其他方式处理
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多