如果Google将整个帖子分成几页,则将其编入索引


8

尽管这是一个问题,但对于使用分隔其帖子的发布者也是一个严重警告<!--nextpage-->

和我一起裸露。我运行了一个流量很高的多作者平台,该平台在搜索引擎上排名很高。在进行与SEO相关的改进时,我注意到Google仅索引了分成几页的文章的第一页。我是怎么注意到的?

因为有人抓住了文章未索引页面的内容并将其发布在自己的网站中。这导致他们在该特定关键字上的排名高于我。实际上,让我重新表述一下,我网站的文章甚至没有被索引到第一页之外。

我的问题是,如果文章分成几页,如何使搜索引擎对整个文章进行索引?理想情况下,如果访问者是搜索引擎,则该脚本将显示完整的文章(如果这样做不会对SEO有害)。欢迎其他建议。

附带说明一下,如果我喜欢Black Hat技术,那将是我可以利用的内容的金矿。想一想

而且,就个人而言,应该在以后的Wordpress更新中解决此问题。

更新:是详细讲述了一个类似的问题WordPress的创建相同的规范网址为分页序列的所有网页被要求在这里,然而答案被张贴,并标记为正确不回答这个问题。该解决方案仅适用于分页评论,不适用于分页帖子。

更新2:根据Google的这篇博客文章,我们可以使用rel=”next”rel=”prev”指示页面之间的关系。例如,这就是我们应该在第2页中包括的<head>内容:

<link rel="canonical" href="http://domain.com/article/2" />
<link rel="prev" href="http://domain.com/article/1" />
<link rel="next" href="http://domain.com/article/3" />

如果在它之前/之后没有页面,则不应有rel =“ prev”或“ next”。


似乎您已找到答案。想要格式化并接受它吗?我认为很多人将从中受益。
Tomas Buteler

@tbuteler虽然我找到了解决方案,该解决方案是在每个分页页面上添加唯一的Canonical URL,link rel="prev"/"next"在需要时包括,但我没有编写脚本。但是,toscho在聊天中提到他可能有某些东西。观看此空间以获取更新...
Christine Cooper

我已经在您提到的问题的答案中更新了代码。我已经测试过了,它可以解决您的问题。寻找有关此缺陷的好工作!
shea 2013年

Answers:


2

脚本解决方案的基本问题是:rel_canonical不提供任何有用的过滤器。因此,我们必须替换该函数:

remove_action( 'wp_head', 'rel_canonical' );
add_action( 'wp_head', 't5_canonical_subpages' );

下一个问题:$GLOBALS['numpages']之前为空setup_postdata()。我们已经可以在这里调用该函数了,但是它可能会有副作用。

这是一个解决方案,它也添加了正确的上一个/下一个链接,并且可以防止引起的冲突关系adjacent_posts_rel_link_wp_head。我们在wp_head不晚于优先级9的情况下也加入了钩子,无法停用后一个钩子。

remove_action( 'wp_head', 'rel_canonical' );
add_action(    'wp_head', 't5_canonical_subpages', 9 );

/**
 * Extend version of the native function rel_canonical()
 *
 * @wp-hook wp_head
 * @return  void
 */
function t5_canonical_subpages()
{
    if ( ! is_singular() )
        return;

    if ( ! $id = $GLOBALS['wp_the_query']->get_queried_object_id() )
        return;

    $post = get_post( $id );
    setup_postdata( $post );

    # let WordPress do all the work
    if ( empty ( $GLOBALS['page'] ) )
        return rel_canonical();

    $permalink = get_permalink( $id );
    $canonical = t5_page_permalink( $permalink, $GLOBALS['page'] );
    echo "<link rel='canonical' href='$canonical' />";

    # next and prev links
    if ( 1 < $GLOBALS['page'] )
    {
        $prev = t5_page_permalink( $permalink, $GLOBALS['page'] - 1 );
        print "<link rel='prev' href='$prev' />";
    }

    if ( isset ( $GLOBALS['numpages'] ) && $GLOBALS['page'] < $GLOBALS['numpages'] )
    {
        $next = t5_page_permalink( $permalink, $GLOBALS['page'] + 1 );
        print "<link rel='next' href='$next' />";
    }

    # avoid conflicting pev/next links
    remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
}

/**
 * Helper to get correct permalinks for sub-pages.
 *
 * @param  string $permalink
 * @param  int    $page
 * @return string
 */
function t5_page_permalink( $permalink, $page )
{
    if ( 1 == $page )
        return $permalink;

    # no pretty permalinks
    if ( '' === get_option( 'permalink_structure' ) )
        return add_query_arg( 'page', $page, $permalink );

    return $permalink . user_trailingslashit( $page, 'single_paged' );
}

非常感谢您的脚本。您是否有时间添加我的问题中所述的link rel="prev"/rel="next"功能Update 2
克里斯汀·库珀

这将需要setup_postdata()–在页面呈现过程中应在以后发生的一些事情。
fuxia

即使要解决此索引编制问题需要“ link rel”,我也应该为此单独提出一个问题吗?
克里斯汀·库珀

@ChristineCooper我现在添加了。不知道它可能引起什么副作用。
fuxia

1
我花了一段时间来测试,看看Google现在如何索引帖子,我很高兴确认此脚本可以完美地工作。做得好!
克里斯汀·库珀

0

仅供参考:Yoast的WordPress SEO插件负责将rel = prev和rel = next元数据添加到<head>页面的中。那个家伙(酵母)什么都想!


1
-1我知道这一点,但是我不愿意仅为它的一小部分功能安装大型SEO插件,除非您将使用它附带的所有功能,否则您也不会安装。
克里斯汀·库珀
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.