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

.htaccess重写后PHP无法获取GET参数page的问题排查

解决方案

1. 支持带查询参数的分页URL(如 http://localhost/category/gaming?page=2)

你的核心问题是原RewriteRule未保留原始查询字符串,导致?page=2被丢弃。只需添加QSA(Query String Append)标志,让重写时自动追加原查询参数到目标URL:

RewriteEngine On

# 匹配无分页的分类URL,保留查询参数
RewriteRule ^category/([\w\d-]+)$ /category.php?category_slug=$1 [L,QSA]

配置后,访问http://localhost/category/gaming?page=2会被重写为category.php?category_slug=gaming&page=2,此时$_GET['page']就能正常获取到值。

2. 支持路径式分页URL(如 http://localhost/category/gaming/page2/)

如果需要这种更友好的路径格式,新增一条匹配分页路径的RewriteRule即可:

RewriteEngine On

# 匹配带分页的分类URL
RewriteRule ^category/([\w\d-]+)/page(\d+)/?$ /category.php?category_slug=$1&page=$2 [L,QSA]

# 匹配无分页的分类URL
RewriteRule ^category/([\w\d-]+)$ /category.php?category_slug=$1 [L,QSA]
  • 正则page(\d+)捕获分页数字,传递给page参数
  • /?允许URL末尾带或不带斜杠
  • QSA同样保留其他可能的查询参数

额外建议

在PHP代码中给page设置默认值,避免未定义警告:

$page = $_GET['page'] ?? 1; // 如果page参数不存在,默认值为1

确保服务器已开启mod_rewrite功能,且根目录的.htaccess配置被允许(需在Apache配置中设置AllowOverride All)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:05:14