首頁  >  文章  >  php框架  >  關於 laravel 分頁 seo淺談

關於 laravel 分頁 seo淺談

藏色散人
藏色散人轉載
2020-04-14 13:38:053591瀏覽

laravel 的分頁是非常簡單易用的,但是有一點不是非常理想,

預設的分頁產生的連結是

users?page=1

這種形式對seo不是非常友善(理論上)

那麼我們可能就需要像

users/page/1

這種形式的分頁連結

那麼怎麼做呢?

我現在有兩種方式實現的方式

第一種是我之前專案中採用的,直接上正規

直接在blade中進行正規則替換

{!! preg_replace("~(/?)\?page=~", '/page/', $users->render()) !!}

此正則應該有最佳化的空間,還望不吝賜教。

當然對應的路由也要對應的配置,很簡單,就不展開了。

這種方法效果是實現了,但是真的很沒有laravel的風格啊

laravel的風格是什麼? composer , package啊

所以來介紹第二種方法

laravel-paginateroute

使用方法非常簡單,以下摘自readme

##第一步 #

// 要注意对应版本,可到https://packagist.org 方便查看
composer require spatie/laravel-paginateroute

第二步

註冊,

// config/app.php
'providers' => [
    ...
    'Spatie\PaginateRoute\PaginateRouteServiceProvider',
];
'aliases' => [
    ...
    'PaginateRoute' => 'Spatie\PaginateRoute\PaginateRouteFacade',
];

第三步

// app/Providers/RouteServiceProvider.php
use PaginateRoute;
// ...
public function boot(Router $router)
{
    PaginateRoute::registerMacros();
    parent::boot($router);
}

使用

在路由中

// app/Http/routes.php
// Generates /users & /users/page/{page}
Route::paginate('users', 'UsersController@index');

這樣會產生兩條路由

/users
/users/page/{page}

然後在controller中正常按照laravel的分頁寫就可以

#在頁面中這樣使用,這個是simplePaginate的對應寫法

@if(PaginateRoute::hasPreviousPage())
  <a href="{{ PaginateRoute::previousPageUrl() }}">Previous</a>
@endif
@if(PaginateRoute::hasNextPage($users))
  <a href="{{ PaginateRoute::nextPageUrl($users) }}">Next</a>
@endif

推薦:《

laravel教學

以上是關於 laravel 分頁 seo淺談的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除