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

.htaccess如何实现带参数URL去除语言前缀的301重定向

需求说明

需要实现的Apache重定向规则逻辑如下:

  • 触发条件:URL最后一个/后带有?及后续查询参数,且路径开头包含两位的语言路径段(如/fr/、/en/等)
  • 跳转逻辑:移除路径开头的语言段,完整保留原地址的所有查询参数,做301永久重定向
  • 示例:
    访问地址:https://example.com/fr/contact-us/?utm_medium=email
    目标地址:https://example.com/contact-us/?utm_medium=email
  • 原有规则的问题:你之前写的片段仅匹配utm_medium为纯数字的查询参数场景,没有覆盖任意查询参数的情况,也未正确处理路径里的语言段移除逻辑,无法生效。
可用重定向规则

将以下代码写入网站根目录的.htaccess文件,或对应站点的Apache虚拟主机配置中即可:

RewriteEngine On
# 匹配带两位语言前缀、末尾带斜杠且携带查询参数的请求
RewriteCond %{REQUEST_URI} ^/[a-z]{2}/(.*)/$ [NC]
RewriteCond %{QUERY_STRING} .
# 执行跳转,保留全部原有查询参数
RewriteRule ^ /%1/? [L,R=301,QSA]
规则细节说明
  • 第一行RewriteEngine On是开启重写引擎的必备前置语句,如果文件里已经有这行不用重复添加
  • 路径匹配规则^/[a-z]{2}/(.*)/$会捕获所有开头为两位字母语言段、末尾带斜杠的路径,自动把语言段之后的路径内容存入变量%1,[NC]标识不区分大小写,支持/FR/、/En/这类大小写混合的语言路径写法
  • 查询参数判断条件%{QUERY_STRING} .会筛选所有携带非空查询参数的请求,避免无参数的普通路径被误跳转
  • 跳转标识说明:
    • R=301代表永久重定向,注意:规则测试阶段请先把301改成302,确认跳转逻辑符合预期后再改回301,避免浏览器缓存错误规则导致长期访问异常
    • L代表匹配到该规则后停止处理后续重写规则,避免规则冲突
    • QSA标识会自动把原请求的所有查询参数完整追加到跳转后的地址上,不会丢失任何参数
  • 跳转目标末尾的?是为了避免系统自动重复拼接查询参数,和QSA配合可以保证参数完整且不出现重复问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:42:17