专栏首页Web技术布道师laravel 分页 seo浅谈

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' => [
    ...
    '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

本文分享自微信公众号 - PHP技术大全(phpgod)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更

    2020年好,各位 PHPer 们,很久没有写原创文章了,心里实在过意不去,决定写点文字,"从心"出发,以求共鸣。

    猿哥
  • 技术新知

    1 MySQL8.0 pre-GA(pre General Avaliable:公共可用的先行版)于2018年3月19日发布,版本号为 8.0.12

    猿哥
  • 开源推荐 - xlswriter 1.2.5 发布,多项功能改进

    PECL主页: https://pecl.php.net/package/xlswriter

    猿哥
  • Python网络数据采集之登录窗口采集处理|第08天

    你好我是森林
  • 五分钟叫你学会操作MongoDB增删改查

    此篇是相信大家对SQL语句有一定的基础下去看能看懂点,没有SQL基础的也么有问题,直接背住就可以了!(毕竟SQL语句也是背的,MongoDB肯定也是要记熟的)

    我被狗咬了
  • C#开发BIMFACE系列35 服务端API之模型对比6:获取模型构建对比分类树

      BIMFACE平台提供了服务端“获取模型对比构件分类树”API。目录树返回结果以树状层级关系显示了增删改的构件信息,里面无法区分哪些构建是新增、修改或者删除...

    张传宁老师
  • HTTP2和HTTPS来不来了解一下?

    试想一下:请求一张图片,新开一个连接,请求一个CSS文件,新开一个连接,请求一个JS文件,新开一个连接。HTTP协议是基于TCP的,TCP每次都要经过三次握...

    Java3y
  • PCL_common模块api代码解析

    上周点云公众号开启了学习模式,由博主分配任务,半个月甚至一个月参与学习小伙伴的反馈给群主,并在微信交流群中进行学术交流,加强大家的阅读文献能力,并提高公众号的分...

    点云PCL博主
  • Python基础(六)——面向对象编程

      注意一点:类中自定义的方法一定要含有 self 参数,但是在调用的时候,无需为此传递参数。

    py3study
  • JavaScript中的浏览器检测和DOM基础

    由于每个浏览器都具有自己独到的扩展,所以在开发阶段来判断浏览器是一个非常重要的步骤。虽然浏览器开发商在公共接口方面投入了很多精力,努力的去支持最常用的公共功能;...

    魏晓蕾

扫码关注云+社区

领取腾讯云代金券