You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取无变量的干净分页链接?自定义DB表场景

解决自定义数据库表分页链接的URL美化问题

嘿,我来帮你搞定这个分页URL美化的事儿——因为你的数据来自自定义数据库表,所以得同时调整URL重写规则和分页链接生成代码这两部分,下面分两种目标格式给你详细说明:


方案一:改成 site.com/page/cp/2 格式

1. 配置URL重写规则(.htaccess)

在网站根目录的.htaccess文件里添加以下规则(如果是WordPress站点,记得把这段放在WordPress默认的重写规则之前):

RewriteEngine On
# 匹配page/cp/数字的格式,内部转发到原带参数的URL
RewriteRule ^page/cp/([0-9]+)/?$ page/?cp=$1 [L,QSA]

这个规则的作用是让服务器把用户看到的page/cp/2,悄悄转换成原来的page/?cp=2来处理,既保证后端能正确识别分页参数,又给用户展示友好的URL。

2. 修改分页链接的生成代码

你肯定有一段生成分页按钮链接的代码,原来大概是这样的:

// 旧写法:生成带查询参数的链接
$pagination_link = 'page/?cp=' . $current_page;

现在直接改成美化后的格式:

// 新写法:生成page/cp/数字的链接
$pagination_link = 'page/cp/' . $current_page;

这样前端输出的分页按钮就会指向site.com/page/cp/2啦。

3. 后端获取分页参数

不用担心参数获取的问题,重写规则已经把cp参数传递过去了,你原来的代码可以继续用:

// 获取当前页码,默认显示第一页
$current_page = isset($_GET['cp']) ? intval($_GET['cp']) : 1;

方案二:改成更简洁的 site.com/page/2 格式

如果觉得cp后缀有点多余,想更简洁的话,可以用这个方案:

1. 配置URL重写规则(.htaccess)

同样在.htaccess里添加规则:

RewriteEngine On
# 匹配page/数字的格式,转发到原URL
RewriteRule ^page/([0-9]+)/?$ page/?cp=$1 [L,QSA]
# 确保访问page本身时默认加载第一页
RewriteRule ^page/?$ page/?cp=1 [L,QSA]

2. 修改分页链接生成代码

把链接生成逻辑调整一下,第一页可以直接指向page,不用带页码:

// 生成简洁版分页链接
if ($current_page == 1) {
    $pagination_link = 'page'; // 第一页直接用page路径
} else {
    $pagination_link = 'page/' . $current_page;
}

3. 后端获取参数

和方案一完全一样,还是用$_GET['cp']获取页码,默认值设为1即可:

$current_page = isset($_GET['cp']) ? intval($_GET['cp']) : 1;

额外注意事项

  • 如果你的服务器是Nginx(不是Apache),需要把Apache的重写规则转换成Nginx语法,比如方案二的Nginx规则:
    location /page {
        if ($request_uri ~* "^/page/([0-9]+)/?$") {
            rewrite ^/page/([0-9]+)/?$ /page/?cp=$1 last;
        }
        if ($request_uri ~* "^/page/?$") {
            rewrite ^/page/?$ /page/?cp=1 last;
        }
    }
    
  • 测试前记得清空浏览器缓存,避免旧URL的缓存影响结果。
  • 如果你的page是具体的PHP文件(比如page.php),要把规则里的page改成page.php,比如RewriteRule ^page/cp/([0-9]+)/?$ page.php?cp=$1 [L,QSA],根据你的实际文件结构调整就行。

内容的提问来源于stack exchange,提问作者Jaswinder Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:07:14