我使用Drupal 7,并且尝试使用“ noindex”元标记来防止http://example.com/comment/reply/43/738被搜索引擎索引。
即使我在robots.txt中使用了以下角色,也已在评论/回复页面建立索引:
Disallow: /comment/reply/
我需要在哪个模板文件中为/ comment / reply /页面合并“ noindex”元标记?
我使用Drupal 7,并且尝试使用“ noindex”元标记来防止http://example.com/comment/reply/43/738被搜索引擎索引。
即使我在robots.txt中使用了以下角色,也已在评论/回复页面建立索引:
Disallow: /comment/reply/
我需要在哪个模板文件中为/ comment / reply /页面合并“ noindex”元标记?
Answers:
您可以在robots.txt中使用以下任何代码:
User-agent: *
Disallow: /*comment
这将忽略每个包含comment的 URL 。
您还可以使用以下命令忽略每个包含/ comment的 URL 。
User-agent: *
Disallow: /comment/reply
User-agent: *
Disallow: /comment
执行完此操作后,请使用Google Robots.txt检查器检查其是否正常运行。
在主题的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');
?>
更新:以下工作,它打印<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');
}
}
希望最终可以通过Meta Tags模块解决此问题-有一个功能请求,但尚不清楚模块作者是否希望支持此功能。
[我的先前评论]我只是想补充一点,使用robots.txt并不是答案-正如您已经注意到的那样,尽管使用,链接仍会出现在搜索结果中Disallow: /comment
。这是预料之中的,因为robots.txt告诉漫游器不要抓取这些页面,但是它不会告诉Google不要对其进行索引。如SEOmoz Robots.txt和Meta Robots搜索引擎优化最佳做法中所述:
在大多数情况下,应使用参数为“ noindex,follow”的元机器人作为限制爬网或索引的方法。
使用Robots.txt阻止-告诉引擎不要抓取给定的URL,但告诉引擎它们可以将页面保留在索引中并在结果中显示。
使用Meta NoIndex阻止-告诉引擎他们可以访问,但不允许它们在结果中显示URL。(这是推荐的方法)因此,您所需要的noindex元标记确实是您所需要的。
robots.txt
文件中写了什么规则?