ハマログ

株式会社イーツー・インフォの社員ブログ

Laravelのページネーションでrel=”next”とrel=”prev”を実装する

ページネーションの実装時に、GoogleのGoogle ウェブマスターブログ 複数ページにまたがる記事やコンテンツをお持ちの方へ。rel=”next” と rel=”prev” を使用したページネーションのご紹介とか、Googleウェブマスター向け公式ブログ 検索結果に「すべて表示」ページを優先的に表示する方法のあたりを見ると、以下の方針でマークアップしなさいと書いてあります。

1.「すべて表示」ページがある場合はcanonicalタグを表示
2.「すべて表示」ページがない場合、もしくはページネーションの方を優先させたい場合は、rel=”next”とrel=”prev”を利用して前後のページ関係を表す。
3.「すべて表示」ページを検索結果に表示しないことを強く希望する場合は、「すべて表示」ページに “noindex” を設定。

個人的には、コンテンツ作成側に意思表示させるのではなく、ロボットのほうが頑張って欲しいとおもっています。


さて、Laravelでrel=”next”とrel=”prev”を実装する方法です。かんたんです。

まず、paginateメソッドでコレクションをもってきます。

$cars = Car::onsale()->where('xxxx', 'yyyy')->paginate(20);

画面表示します。大抵の場合、page=1と、ページ指定なしは重複コンテンツのため、page=1の場合は文字列を非表示にしています。

@if($cars->currentPage() > 1)
    @if($cars->currentPage() == 2)
        {{-- もしくはcanonicalでもよい --}}
        <link rel="prev" href="{{ str_replace('?page=1', '', $cars->previousPageUrl()) }}" />
    @else
        <link rel="prev" href="{{ $cars->previousPageUrl() }}" />
    @endif
@endif

@if($cars->hasMorePages())
    <link rel="next" href="{{ $cars->nextPageUrl() }}" />
@endif

結果
1ページめ

<link rel="next" href="https://example.com/search/yyyy?page=2" />

2ページめ

<link rel="prev" href="https://example.com/search/yyyy" />
<link rel="next" href="https://example.com/search/yyyy?page=3" />

最後のページ

<link rel="prev" href="https://example.com/search/yyyy?page=17" />

成功しました!

GoogleLaravelLaravel5nextPaginationprevrelSEOページネーション

  kaneko tomo   2016年9月18日


関連記事

cronの編集

今更ながら昔習ったcronの編集方法です cronを作成・編集する際は cron…

hibernateで単純なSELECT文の順読み込み

こんにちは 最近なくしたパスモが飯能で見つかったが、取りに行くのを断念しました、…

iOSアプリの実機ビルドエラー

SwiftアプリをiOSで実機デバッグしようと思ってビルドしたときに以下のエラー…


← 前の投稿

次の投稿 →