關于 laravel 分頁 seo淺談

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'?=>?[ ????... ????'SpatiePaginateRoutePaginateRouteServiceProvider', ]; 'aliases'?=>?[ ????... ????'PaginateRoute'?=>?'SpatiePaginateRoutePaginateRouteFacade', ];

第三步

//?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>Previous</a> @endif @if(PaginateRoute::hasNextPage($users)) ??<a>Next</a> @endif

推薦:《laravel教程

以上就是關于

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享