如果将Robots元标记设置为noindex,则阻止Yoast删除规范标记

时间:2022-02-08 作者:Álvaro Franz

我在一个临时站点上使用Yoast,我希望有一个指向主域的规范URL。

这样就可以登台了。无论什么com使用canonical,无论什么。com公司

我正在使用wpseo_canonical 滤器

add_filter(\'wpseo_canonical\', \'force_canonical_domain_replace\');
其中,force\\u canonical\\u domain\\u replace()进行替换。它工作得很好。

我还将meta robots标记设置为noindex,nofollow。正在执行:

add_filter( \'wpseo_robots\', function( $robots ) {

   return \'noindex, nofollow\';

} );
但Yoast似乎自动删除了规范标记when it detects noindex in the meta robots content. 我怎样才能防止这种情况?

我就是这样做的:

// Replace domain for any URL
add_filter(\'wpseo_canonical\', \'force_canonical_domain_replace\');
function force_canonical_domain_replace($url){

    $current_site_domain = whatever_get_current_domain();
    if(\'whatever.com\' == $current_site_domain){
        return $url;
    }

    // Replace current domain with whatever.com in all urls
    return str_replace($current_site_domain, \'whatever.com\', $url);

}

// Make sure that meta robots uses noindex, nofollow if we are not in whatever.com
add_filter( \'wpseo_robots\', function( $robots ) {

    if(\'whatever.com\' == whatever_get_current_domain()){
        return $robots;
    }

    // Replace string entirely to avoid issues
    return \'index, follow\';

} );

// Helper function to safely get the current domain
function whatever_get_current_domain(){
   $parsed = parse_url(home_url());
   return $parsed[\'host\'];
}

1 个回复
SO网友:kero

假设这是an XY problem 而最初的问题是:“;如何阻止爬虫为我的临时站点编制索引"E;

暂存和生产应尽可能接近。对代码进行更改将是一个巨大的“挑战”;否否“;对于我来说(除了一些环境变量,例如设置WP_ENVIRONMENT_TYPE 或db凭据)。

相反,我建议将Web服务器设置为serve the X-Robots-Tag with noindex. 那里was some discussion which takes preference 如果两者都有(X-Robots-Tag<meta name="robots" />), 但根据我的经验X-Robots-Tag: none 没有索引的网站,即使他们自己的<meta name="robots" /> 不同。

相关推荐