保证搜索引擎不会抓取站点的一个子目录


Guarantee Search Engines Don't Scrape One Subdir of Site

在Linux, Apache, PHP网站上,我需要确保我的网站上的子目录/cms不能被搜索引擎抓取。

看,在网站的根,我已经安装了一个产品目录称为品尼高推车。他们想要一个从CMS中提取内容的新闻页面。我把WordPress放到了一个名为/cms的子目录下,创建了一些帖子,然后用下面的代码把它们放到了我的Pinnacle Cart主题中:

<?php require_once('../../../cms/wp-blog-header.php'); ?>
<?php $i = 1; $MAX_ARTICLES_TO_SHOW = 5; ?>
<?php while (have_posts()): the_post(); ?>
    <div <?php post_class() ?> id="post-<?php the_id(); ?>">
        <h2><?php the_title(); ?></h2>
        <div class="entry">
            <?php the_content(); ?>
        </div><!-- .entry -->
        <div style="clear:both;">&nbsp;</div>
        <small><?php the_time('F j, Y') ?></small>
    </div><!-- #post-... -->
<?php ++$i; if ($i > $MAX_ARTICLES_TO_SHOW) { break; } ?>
<?php endwhile; ?>

请注意,文章中使用的一些图像将从/cms中提取,我希望这些图像可以正常加载,但我不希望谷歌或任何搜索引擎跟随/cms下的任何内容。

还注意在WordPress/cms中,我勾选了"不要让Google, Technorati等网站索引此网站"的设置。

我想我需要调整WordPress在/cms/wp-content/themes下的默认主题,或者在网站的/cms或/(根)文件夹中设置一些。htaccess设置。

您可以将其添加到robots.txt文件中。

Disallow: /cms/

更多信息请访问http://www.robotstxt.org/robotstxt.html

搜索引擎和刮刀总是可以忽略这一点(大多数大型搜索引擎将遵循规则)。你也可以检查$_SERVER['HTTP_USER_AGENT'],但这是可以伪造的。没有100%的方法可以阻止刮刀。

查看robots.txt文件。这是搜索引擎在抓取你的网站之前读取的文件。在该文件中,您可以指示它们完全忽略某些目录。

为什么不用robots.txt呢它是一个放在根目录中的文件,所有机器人在抓取您的站点之前都会读取它。在这个文件中,您可以指定不希望被抓取的目录。有几个链接可以让你开始http://www.robotstxt.org/robotstxt.html http://codex.wordpress.org/Search_Engine_Optimization_for_WordPress Robots.txt_Optimization

robots.txt是一个选项,正如这里的其他答案所述。

Disallow: /cms/

robots.txt文件的主要缺点是它们可以被忽略,或者仅仅被忽略,这取决于机器人。

  • http://www.google.com/support/webmasters/bin/answer.py?answer=156449
  • http://www.robotstxt.org/robotstxt.html

您还可以选择密码保护目录,这将阻止搜索引擎索引页面(例如谷歌和必应)。根据您的服务器环境,您还可以禁止使用.htaccess和.htpasswd访问CMS文件夹。此方法允许用户访问Wordpress安装,但不包括bot/未经身份验证的用户。

  • http://httpd.apache.org/docs/2.0/howto/htaccess.html auth

另一个选项是为该特定目录设置标头404或301,同样使用.htaccess。这显然也会阻止用户访问它,所以如果你想阻止它只对机器人,你可以白名单某些ip或用户代理字符串,允许真正的用户看到页面和机器人接收一个404头,这将阻止索引页面。