如何在Drupal 7中不对索引进行评论/回复


9

我使用Drupal 7,并且尝试使用“ noindex”元标记来防止http://example.com/comment/reply/43/738被搜索引擎索引。

即使我在robots.txt中使用了以下角色,也已在评论/回复页面建立索引:

Disallow: /comment/reply/

我需要在哪个模板文件中为/ comment / reply /页面合并“ noindex”元标记?


1
您在robots.txt文件中写了什么规则?
tostinni 2011年

@tostini:我用过Disallow:/ comment / reply /
Naweed Chougle 2011年

Answers:


7

您可以在robots.txt中使用以下任何代码:

User-agent: *
Disallow: /*comment

这将忽略每个包含comment的 URL 。

您还可以使用以下命令忽略每个包含/ comment的 URL 。

User-agent: *
Disallow: /comment/reply
User-agent: *
Disallow: /comment

执行完此操作后,请使用Google Robots.txt检查器检查其是否正常运行。



由于Noindex是meta标签,因此可以防止整个页面被编入索引。现在,您已禁止对注释进行爬网,因此您可以使用网站站长工具从Google删除已编入索引的链接。请转到站点配置>>爬网程序访问>>删除URL。我认为这将是更好的解决方案。
Vivek R

使用网站站长工具删除网址后,将出现具有相同模式/ comment / reply /的新网址!即使在robots文件中使用了Disallow:/ comment / reply /,也已为URL编制了索引。
纳威德·乔格

2
给搜索引擎一些时间删除..它不会在一夜之间发生,所以请等待一段时间..可能是一周左右。
Vivek R

就像我之前说的那样,即使在我使用Disallow / comment / reply / ...之后,仍在为URL编制索引。这可能是由于来自外部站点的答复表单链接所致。我已经更新了我的问题,并包括有关可能需要meta noindex标记的详细信息。
纳威德·乔格

4

在主题的template.php或page.tpl.php中,您可以检查页面的url以查看该页面是否为注释页面,然后添加将插入meta标记的代码。

您可以在template.php函数YOURTHEME_preprocess_html()中执行此操作,或将其插入到page.tpl.php顶部附近。要添加的代码如下所示:

    <?php
      $element = array(
        '#tag' => 'meta', 
        '#attributes' => array(
          'property' => 'robots',
          'content' => 'noindex',
        ),
      );
    drupal_add_html_head($element, 'robots');
?>

参见drupal_add_html_head()


谢谢@jmarkel!您能以编程方式帮助我检查该页面是否类似于:example.com/comment/reply/32/409 ....以便仅为此类页面设置meta noindex吗?
Naweed Chougle

1
这就是问题所在-确实没有任何节点类型可以作为注释-它们似乎只与所注释的节点一起使用。因此,实际上不可能普遍区分它们。如果单击评论的永久链接,则会得到一个以'comment /'开头的网址,但这无济于事,因为它们不在内部携带该网址。我想您可以在后续页面上寻找“ page”参数(即,当评论有多个页面时),但是您仍然不得不使用寻呼机来区分评论和其他页面。长话短说-不确定如何做...
jmarkel 2012年

现在,@ jmarkel,我将不得不使用Google网站管理员的网址删除工具。通过Matt Cutts的一个视频,似乎URL一旦被删除就不会再出现。问题是我发现搜索结果中出现了新的!
Naweed Chougle

1

更新:以下工作,它打印<meta name="robots" content="noindex,follow" />在通过以开头的路径访问的所有页面的头部comment。正如jmarkel指出的那样,这是为了解决这样的事实:类似于comment / 3的页面内部带有node / nid作为参数。

<?php
function metarobots_comment_help() {
  $url_components = explode('/', request_uri());
  if ($url_components[1] == 'comment') {
    $elements = array(
      '#tag' => 'meta',
      '#attributes' => array(
        'name' => 'robots',
        'content' => 'noindex,follow',
      ),
    );
   drupal_add_html_head($elements, 'robots');
  }
}

借助对arg函数有用注释

希望最终可以通过Meta Tags模块解决此问题-有一个功能请求,但尚不清楚模块作者是否希望支持此功能。


[我的先前评论]我只是想补充一点,使用robots.txt并不是答案-正如您已经注意到的那样,尽管使用,链接仍会出现在搜索结果中Disallow: /comment。这是预料之中的,因为robots.txt告诉漫游器不要抓取这些页面,但是它不会告诉Google不要对其进行索引。如SEOmoz Robots.txt和Meta Robots搜索引擎优化最佳做法中所述

在大多数情况下,应使用参数为“ noindex,follow”的元机器人作为限制爬网或索引的方法。

使用Robots.txt阻止-告诉引擎不要抓取给定的URL,但告诉引擎它们可以将页面保留在索引中并在结果中显示。

使用Meta NoIndex阻止-告诉引擎他们可以访问,但不允许它们在结果中显示URL。(这是推荐的方法)因此,您所需要的noindex元标记确实是您所需要的。


没错,@ arjan,您已用我的补充信息重新陈述了我的评论之一。我正在寻找一种为不需要的页面设置meta noindex的方法。
Naweed Chougle,2012年

1
是的,看来您不确定100%,所以我想补充一下它是正确的;)
arjan 2012年

@ProgrammingEnthusiast:请参见上面的更新。
arjan 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.