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

如何编写.htaccess规则将year查询参数前置到URL路径开头

.htaccess 重写规则实现year参数前置方案

需求匹配

  • 原始URL:webku.com/index.php?src=admin&mod=login&year=2022
  • 目标URL:webku.com/2022/index.php?src=admin&mod=login
  • 实现逻辑:提取查询参数中year的值,放到访问路径最前端,同时从查询串中移除year参数

配置代码

把下面的代码放到站点根目录的.htaccess文件中即可,使用前确认服务器已开启mod_rewrite模块(绝大多数商用虚拟主机默认开启):

RewriteEngine On

RewriteCond %{QUERY_STRING} ^(.*)&year=(\d{4})$ [NC]
RewriteRule ^index\.php$ /%2/index.php?%1 [R=301,L,NE]

规则解释

  • RewriteEngine On:开启Apache重写功能
  • RewriteCond行做查询串匹配:
    • 捕获year参数值(默认匹配4位数字年份,可根据实际需求修改\d{4}为[^&]+支持任意格式的year值)
    • 捕获year之前的所有其他查询参数
    • [NC]标记表示参数名不区分大小写,YEAR/Year写法都能识别
  • RewriteRule行执行重定向:
    • 仅匹配根目录下直接访问index.php的请求
    • 把捕获到的年份值放到路径前缀位置,拼接剩余查询参数
    • [R=301]为301永久重定向,适合做搜索引擎地址适配;如果只需要服务器内部转发、不改变浏览器地址栏显示,删掉R=301,标记即可
    • [L]标记表示匹配到当前规则后停止执行后续重写规则,避免规则冲突
    • [NE]标记禁止特殊字符转义,避免参数内容出现编码异常

扩展说明:如果你的year参数可能出现在查询串的任意位置(开头、中间、末尾),可以把RewriteCond的正则替换为^(.*?)&?year=([^&]+)&?(.*)$,同时把重写目标改为/%2/index.php?%1%3,即可全场景兼容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:48:34