robots.txt是什么?
robots.txt是搜索引擎的脚本蜘蛛进站第一个获取的信息
robots也叫爬虫协议, 这是一种国际上约定俗成的协议, 用它来限制爬取信息, 也能用它来协助爬取, 但这并不是强制规定, 也就是说并非所有的搜索蜘蛛都遵守, 不过大部分都遵守.
如何修改robots.txt?
首先, 在wordpress中, 这个文件是动态生成的, 你无法在ftp主机中找到它, 但它确实存在
它的位置在 xxxx.com/robots.txt , 它仅存在于顶级域名中, 如果是wordpress多站点, 子目录站点并不会单独存在一份robots.txt
为什么要修改robots?
wordpress默认的robots.txt的内容如下
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://www.52dixiaowo.com/wp-sitemap.xml
它原有的内容, 表示不允许wp-admin, 不过还是太少了, 我们可以自定义增加一些不允许爬取的目录
如何修改robots?
在早期版本, 可以通过直接上传一个robots.txt以覆盖自带的robots.txt, 但从wordpress5.7版本开始, 就不可以了
它是由一个函数生成, 且它不允许被自定义文件覆盖
这个函数是在 “根目录/wp-include/functions.php”文件中, 它的名称叫 do_robots(), 我们修改此函数就可以了
function do_robots() {
header( 'Content-Type: text/plain; charset=utf-8' );
/**
* Fires when displaying the robots.txt file.
*
* @since 2.1.0
*/
do_action( 'do_robotstxt' );
$output = "User-agent: *\n";
$public = get_option( 'blog_public' );
$site_url = parse_url( site_url() );
$path = ( ! empty( $site_url['path'] ) ) ? $site_url['path'] : '';
$output .= "Disallow: $path/wp-admin/\n";
$output .= "Disallow: $path/wp-includes/\n";
$output .= "Allow: $path/wp-admin/admin-ajax.php\n";
/**
* Filters the robots.txt output.
*
* @since 3.0.0
*
* @param string $output The robots.txt output.
* @param bool $public Whether the site is considered "public".
*/
echo apply_filters( 'robots_txt', $output, $public );
}
注意不要覆盖wp-content, 否则无法抓取图片, 而wp-includes则一般没有任何静态资源