web-dev-qa-db-ja.com

rel = prev / next / canonicalを頻繁に更新されるコンテンツのページネーションとともに使用する

Googleからの非常に多くのアドバイスを読んだ後でも、ページ分割されたシリーズの適切なマークアップが何であるかについて混乱しています。

一般的な知恵はこれであるようです:

  • rel="next"を使用して一連の各後続ページをポイントし、rel="prev"を使用して後方に移動します。

  • rel="canonical"各ページ分割されたページ自体OR rel="canonical"すべての「wiew all」バージョンへORしない.

私の問題は、このセットアップがオンラインストアなどのかなり静的なセットアップを想定しているように見えることです。

しかし、ブログ/公開はどうですか?

まず第一に、投稿は最初に最新のものが表示されるため、以前の投稿のrel = "next"は、控えめに言っても直観的ではありません。古いエントリのrel = "prev"だったらもっと便利でしょうか?

2番目に、コンテンツが絶えず更新されているため、ページングされたURLのコンテンツは、最終的に2ページ目が3ページ目になるまで、投稿ごとに変更されます。これらのページには、独自のインデックス付きリンクが必要ですか?

3番目に、「すべて表示」は、確かに数百以上の投稿があるオプションではありません。

それでは、最適なルートは何ですか?

  1. 一般的な知恵に従ってください。

  2. 古い投稿が「前」で、新しい投稿が「次」であることを確認するために、方向を逆にします。

  3. 前/次なしのエントリページへの相対標準ページ。

  4. エントリーページに標準的ですが、prev/nextも使用します。

  5. 後続のすべてのページでNoindexおよび/またはnofollowを使用し、それらを忘れます。

または、他の何か?

更新-予想されるユーザーの動作:

ページ区切りアーカイブは、一意のコンテンツではなく、サイト(または作成者など)が過去に書いた他の内容のクイックリファレンスです。

読者はたとえば著者名をクリックして、他に書いたものを確認し、最新のエントリを取得します。さらに見たい場合は、ページネーションを使用します。

誰かがグーグル経由でリストにアクセスした場合(「articles by X」を検索した後)、それでも問題ありません。しかし、「シマウマに関するXの記事」について検索したという理由だけで、example.com/author-X/page/3に着陸した人々にはほとんど意味がありません。この場合、Googleに検索者をzebraの投稿自体に連れて行きたいです。

4

わかりましたので、最後に私がやったことは長い道のりを回ることでした。このために、ページネーションに日付ベースのアーカイブを使用し、開始点としてシリーズをホームページにリンクします。したがって、ヘッダーに挿入するコードは次のようになります。

<? if(is_home()) { ?>
<link rel="prev" type="text/html" href="/<? echo date('Y-m-d'); ?>" /> 
<? } 
if(is_day()) { 
$date = isset($_GET['date']) ? $_GET['date'] : get_the_time('Y-m-d'); 
$today = date('Y-m-d');
$oldest = '[get the date of the first post somehow or just hardcode it as I did]'; 
if ($date != $oldest) { ?>
<link rel="prev" type="text/html" href="/<? echo date('Y-m-d', strtotime($date .' -1 day')); ?>" /> 
<? } if ($date != $today) { ?>
<link rel="next" type="text/html" href="/<? echo date('Y-m-d', strtotime($date .' +1 day')); ?>" /> 
<? } if ($date == $today) { ?>
<link rel="next" type="text/html" href="/" /> 
<? } } ?>

毎日10件以上20件以下の投稿があるため、現在のコンセプトに適しています。

利点

  1. 「前」は常に過去の日付であるため、今では物事がはるかに理にかなっています。

  2. コンテンツは所定の位置にとどまるため、rel = prev/nextがgooglebotにシリーズの一部であることを伝える一方で、各ページにrel = canonicalを含めることも理にかなっています。

  3. 重複するコンテンツが少なくなるように、従来のページネーションリンクを削除します。通常は同じ目的を達成するためにそれらを保持し、アーカイブを取り除きますが、この方法はより直感的だと思います。

警告

  1. 毎日少なくとも1つの投稿を公開する必要があります。そうしないと、チェーンが切断されます。これは、より多くのコーディング(公開された投稿で日付を取得するだけ)で解決できますが、私はそれを自分で必要としません。

  2. その日の最初の投稿は、ちょうど真夜中に公開するのが適切です。そうしないと、何かを投稿するまで、ホームページは空のアーカイブを指します。繰り返しますが、より多くのコードがこれも解決します。

  3. 分類用語ごとにそれを行うことは可能ですが、もう少し複雑です(#1と#2に戻ります)。とりあえず、アーカイブのループ制限を100のような値に設定し、後でこれがどこに行くかを確認します。

結論

基本的に、一定の増分でアーカイブされたページは公開には最適ではありません-日付ベースのアーカイブは少し良くなりますが、今のところは自分でやっています。

0

まず第一に、投稿は最初に最新のものが表示されるため、以前の投稿のrel = "next"は、控えめに言っても直観的ではありません。古いエントリのrel = "prev"だったらもっと便利でしょうか?

rel="next"は、論理シーケンスの次の項目を指定します。「新しい公開投稿」ではなく、「この一連のページの次のページ」を意味します。このコンテキストでは以前に公開された投稿ページ

2番目に、コンテンツが絶えず更新されているため、ページングされたURLのコンテンツは、最終的に2ページ目が3ページ目になるまで、投稿ごとに変更されます。これらのページには、独自のインデックス付きリンクが必要ですか?

古い投稿者から新しい投稿者までの各投稿のリストがあることが理にかなっている場合、そのページは「修正」され、ページのコンテンツの変更の問題は発生しません。

投稿リストの順序が最新から古いの場合、ページ付けされたリストには、あなたが言うようにURLを頻繁に変更する投稿のリストが含まれます、Googleがそれを検出し、クロール速度を上げて頻繁にアクセスします。

個人的な経験から、同期していないページのページ分割されたページ、またはGoogleのそのリストのページにアクセスすることはほとんどありません。フォーラムの投稿で、Googleにキャッシュされたページに投稿が含まれていないことがあります探していましたが、スレッドの古いページにありました。

あなたが与えた例では、「シマウマに関するXの記事」を探して、GoogleがSERPでシマウマに関する投稿へのリンクを直接表示すると、リンクの代わりに著者もページに表示されると、より理にかなっていると思います著者投稿のリスト内の投稿へ(ただし、リスト/投稿のタイトルと説明によって異なります)。

3番目に、「すべて表示」は、確かに数百以上の投稿があるオプションではありません。

ウェブマスター向けガイドライン 提案:

ページ上のリンクの数を妥当な数(最大で数千)に制限します。

私の提案は次のとおりです。

  • 新しいものから古いものへの順序を維持します。これは、人々がブログの投稿リストから期待することです(逆ではありません)
  • rel="next"およびrel="prev"リンクを実装して、URL間の関係を示し、Googleがそれらを頻繁にクロールし続けることを信頼します。
  • Search Consoleで検索クエリとランディングページを監視して、ページ分割されたコンテンツへのトラフィックを受信して​​いるか、投稿へのトラフィックを直接受信しているかを確認します。
3
marcanuy

しかし、ブログ/公開はどうですか?

rel next/prevの目的を誤解しているようです。

コンテンツを分割するたびに、各ページが個別のコンテンツとしてインデックス付けされるのではなく、1つの大きなメタ投稿であることをGoogleに提案できます。それ以外の場合、ガイドのページ2にはキーワードxxxのインデックスが大量に作成されますが、コンテキストを取得するには最初から読む必要があります。

ブログの投稿は大きなコンテンツではありません。彼らはたくさんの別々のピースです。ユーザーがコンテンツ間を移動する方法を無視し、複数ページのコンテンツの途中に着陸するべきかどうかに注目します。

Prev/nextが必要な例は、「Javascriptをクリーンアップする方法」に関する10ページの公開された投稿です。または、3,000リンクの静的ディレクトリを100リンクの30ページに分割しました。

0
L Martin