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

使用.htaccess批量重定向含page=1的分类URL至仅带category参数的URL

批量移除URL中page=1参数的重定向方案

需求说明

需要将所有带?category=N&page=1(N为1-12的整数)的URL,重定向到仅保留category=N参数的URL,示例:

  • https://www.example.com/?category=1&page=1 → https://www.example.com/?category=1
  • https://www.example.com/?category=2&page=1 → https://www.example.com/?category=2
  • ...(覆盖12个分类)

现有问题

当前使用的重定向代码无法生效:

RewriteEngine On 
# RewriteCond %{REQUEST_URI}  ^\/index\.php$ 
RewriteCond %{QUERY_STRING} ^category=([0-9]*)&page=1 
RewriteRule ^(.*)category=([0-9]*)&page=1$ https://www.example.com/?category=([0-9]*)%1 [R=302,L]

另外,已实现的index.php重定向代码可正常运行:

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

错误原因分析

  1. RewriteRule的匹配目标是URL的路径部分,而非查询字符串,原规则试图匹配路径中的category=...&page=1完全错误;
  2. 替换字符串中使用([0-9]*)属于语法错误,应使用RewriteCond中捕获的分组变量%1;
  3. 查询字符串的匹配规则未限制分类号的位数(1-12是1-2位数字),也未精确匹配结尾,可能误匹配其他参数组合。

正确的重定向代码

整合已生效的index.php规则,以下代码可实现批量重定向:

RewriteEngine On

# 保留已生效的index.php重定向
RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

# 批量处理category=N&page=1的重定向
RewriteCond %{QUERY_STRING} ^category=([0-9]{1,2})&page=1$
RewriteRule ^(.*)$ /?$category=%1 [R=302,L]

代码说明

  • RewriteCond %{QUERY_STRING} ^category=([0-9]{1,2})&page=1$:精确匹配查询字符串为category=1-2位数字&page=1的情况,捕获分类号到%1;
  • RewriteRule ^(.*)$ /?$category=%1 [R=302,L]:将请求重定向到根路径,仅保留category参数;
  • 若需要永久重定向(用于搜索引擎收录),将R=302改为R=301;
  • L标记表示执行完该规则后终止后续规则,避免与其他规则冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:26