推荐采用「/category/分类名/页码/」格式,如/category/electronics/2/;通过mod_rewrite将该路径映射到list.php?cat=electronics&page=2,兼顾SEO、可读性与后端兼容性。

将带数字分页的列表页(如 /list.php?cat=electronics&page=2)转为语义化友好链接(如 /category/electronics/page/2/ 或更简洁的 /category/electronics/2/),核心是用 mod_rewrite 做内部路径映射,同时保持后端逻辑不变、分页参数可读且 SEO 友好。
明确目标 URL 格式并选一种稳定结构
推荐采用「分类标识 + 页码」两级路径,例如:
-
/category/electronics/→ 第 1 页(隐含 page=1) -
/category/electronics/2/→ 第 2 页 -
/category/electronics/3/→ 第 3 页
不建议用 /category/electronics?page=2,因问号参数无法被缓存、不利于 SEO;也不推荐 /category/electronics/page-2 这类带连字符的写法,增加正则复杂度且无实质优势。统一用斜杠分隔,语义清晰、易解析、易扩展。
在 .htaccess 中添加精准重写规则
确保 RewriteEngine On 已启用,并加入以下规则(放在网站根目录 .htaccess 中):
- 匹配首页(无页码):
RewriteRule ^category/([a-zA-Z0-9_-]+)/?$ list.php?cat=$1&page=1 [QSA,L] - 匹配带页码的路径:
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)/?$ list.php?cat=$1&page=$2 [QSA,L]
说明:
• ^category/([a-zA-Z0-9_-]+)/?$ 捕获分类名(支持字母、数字、下划线、短横线)
• ([0-9]+) 精确捕获纯数字页码,避免误匹配如 /category/abc/xyz/
• [QSA] 保留原始查询参数(如 ?ref=taboola),方便追踪
• [L] 终止后续规则,防止冲突
• 必须加 Options -MultiViews,否则 Apache 可能自动匹配 category.php 导致 404
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
后端 list.php 要适配新参数并校验合法性
重写只是路由,真正起作用的是 PHP 脚本。需确保 list.php 能正确处理 $_GET['cat'] 和 $_GET['page']:
- 对
cat做白名单或数据库存在性校验,非法分类直接返回 404 - 对
page强制转为整型,并限制范围(如max(1, min($page, 999))),防止传入负数或超大值 - 若请求页码超出总页数(如共 5 页却访问第 10 页),应返回 404 状态码,而非跳转到末页——避免重复内容
- 生成分页链接时,必须输出重写后的格式,例如:
<a href="/category/<?php echo urlencode($cat); ?>/<?php echo $next_page; ?>/>下一页</a>
扩展:支持多级分类与关键词优化
若分类有层级(如「手机/苹果」),可升级为:/category/mobile/apple/2/ → list.php?cat=mobile&subcat=apple&page=2
对应规则示例:RewriteRule ^category/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([0-9]+)/?$ list.php?cat=$1&subcat=$2&page=$3 [QSA,L]
注意:每多一层,就要多一个捕获组,同时后端需同步增强参数解析与安全过滤。不建议超过三层,否则路径冗长、维护成本上升。

















