web-dev-qa-db-ja.com

Googleが複数のページに分かれている場合、投稿全体をインデックスに登録します

これは質問ですが、<!--nextpage-->を使用して投稿を分離する出版社に対する重大な警告です。

私と一緒に。私は、検索エンジンで非常に高いランクにある、非常にトラフィックの多い複数著者プラットフォームを実行しています。 SEO関連の改善を行っているときに、いくつかのページに分かれている記事の最初のページのみがGoogleによってインデックス化されていることに気付きました。どうやってこれに気付きましたか?

誰かが記事のインデックスに登録されていないページのコンテンツを取得し、自分のサイトに投稿したからです。その結果、その特定のキーワードで私よりも上位にランク付けされました。実際、私のサイトの記事は最初のページを超えてインデックス化されていません。

私の質問は、記事が複数のページに分かれている場合、どのように検索エンジンに記事全体のインデックスを作成させるかということです。理想的には、訪問者が検索エンジンである(SEOにとって有害で​​ない場合)記事全体ifを表示するスクリプトです。他の提案を歓迎します。

補足として、もし私がブラックハットのテクニックに興味があれば、私が利用できるコンテンツの宝庫があるでしょう。 考えるそれについて。

個人的な注意として、この問題はWordpressの将来のアップデートで対処する必要があります。

Updateページ付けされたシーケンスのすべてのページに同じ正規URLを作成する方法を詳細に説明した同様の質問が尋ねられました- here 、ただし、投稿されて正しいとマークされた answer は質問に答えません。このソリューションは、ページ分割された投稿ではなく、ページングされたコメントに対してのみ機能します。

Update 2this Googleのブログ投稿によると、rel=”next”rel=”prev”を使用できますページ間の関係を示します。たとえば、これは<head> onpage 2に含めるべきものです:

<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"を使用しないでください。

8

スクリプトソリューションの基本的な問題は以下のとおりです。rel_canonicalは有用なフィルタを提供しません。だから我々はその機能を交換する必要があります:

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

次の問題:$GLOBALS['numpages']setup_postdata()の前に空です。その関数を既にここで呼ぶことができますが、副作用があるかもしれません。

これは正しいprev/nextリンクを追加する解決策でもあります、そしてそれはadjacent_posts_rel_link_wp_headによって引き起こされる衝突関係を防ぎます。後者のフックを無効にするには、優先度9より遅くないwp_headにもフックします。

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' );
}
2
fuxia

ちょっとFYI:YoastのWordPress SEOプラグインはrel = prevとrel = nextのメタデータをページの<head>に追加することに気を配っています。あの男(Yoast)はすべてを考えている!

0
Miriam Schwab