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中文網其他相關文章!