专栏首页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技术大全

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

如有侵权,请联系 yunjia_community@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 浅谈laravel-admin的sortable和orderby使用问题

    以上这篇浅谈laravel-admin的sortable和orderby使用问题就是小编分享给大家的全部内容了,希望能给大家一个参考。

    砸漏
  • SEO工作,哪些是无稽之谈?

    你在SEO行业呆久了,你就会发现这里与现实是一个道理的,大部分都是做白帽SEO的善良之辈,但也充斥着一些非正规手法做的网站,但对于需要长期运营的网站,如果你使用...

    蝙蝠侠IT
  • 浅谈laravel框架sql中groupBy之后排序的问题

    groupBy中的字段必须是select的字段,并且orderBy从句也必须是select的字段。但是如果select的字段使用聚合函数呢?抱着

    砸漏
  • 浅谈laravel 5.6 安装 windows上使用composer的安装过程

    所以大家的php版本一定不要小于 7.1.3 ,我本地使用的是wamp 3.1.0 64位, php可以选择 7.1.9

    砸漏
  • 浅谈CDN、SEO、XSS、CSRF

    CDN 什么是CDN 初学Web开发的时候,多多少少都会听过这个名词->CDN。 CDN在我没接触之前,它给我的印象是用来优化网络请求的,我第一次用到CDN的时...

    Java3y
  • 浅谈MySQL分页查询

    MySQL系列文章到目前已经更新十几篇,从数据类型谈到了备份恢复再到主从同步分库分表,从本篇开始,会花几篇重点谈谈MySQL基础部分,而本篇我们重点来讲讲我们日...

    创译科技
  • 浅谈laravel数据库查询返回的数据形式

    问题描述:laravel数据库查询返回的数据不是单纯的数组形式,而是数组与类似stdClass Object这种对象的结合体,即使在查询构造器中调用了toArr...

    砸漏
  • 浅谈laravel中的关联查询with的问题

    使用with的的意思,在确定主信息的时候,罗列符合条件的附表信息,适合单条或者少量主表信息或者主表信息筛选

    砸漏
  • 浅谈Laravel模板实体转义带来的坑

    最近在Laravel项目中用到了百度编辑器,插入到数据库我保存的是原始的html标签代码,没有进行实体转义。然后在修改的时候,需要读取到数据库中的数据,进行回显...

    砸漏
  • 浅谈laravel框架与thinkPHP框架的区别

    2、在Laravel框架里,由于其考虑到了跨站请求伪造, 所以如果使用form表单以post方式进行传值时,如果不再form表单中加入{{csrf_field(...

    砸漏
  • 如何做好个人博客的seo呢

    SEO(Search Engine Optimization):汉译为搜索引擎优化。是一种方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是:为...

    ianzhi
  • SEO人员,不要将营销和优化混为一谈?

    一些朋友谈论SEO时,经常将SEO优化说成是SEO营销,表面看没有什么问题,但我们知道营销的概念并不是这么简单,营销并不仅仅是SEO,而SEO也不完全是营销,二...

    蝙蝠侠IT

扫码关注云+社区

领取腾讯云代金券