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

如何编写单个Apache Rewrite规则实现指定多语言路径跳转?

单个Apache Rewrite规则实现多区域/语言路径跳转

没问题,咱们用一条RewriteRule配合正则捕获组就能搞定所有这些跳转需求,完美匹配你提到的三种场景,甚至还能兼容结构一致的其他区域-语言组合。

直接上可用的规则:

RewriteRule ^/([a-z]{2})-([a-z]{2})/(.*)$ /content/company/$2/$1/$3 [R=301,L]

规则拆解与说明

我来一步步拆解这条规则,帮你搞懂它为什么能适配所有需求:

  • 匹配部分:^/([a-z]{2})-([a-z]{2})/(.*)$

    • ^/:精准匹配请求路径的起始斜杠
    • ([a-z]{2}):第一个捕获组,抓取两位小写字母的语言代码(比如en、fr)
    • -:匹配路径里连接语言和区域的连字符
    • ([a-z]{2}):第二个捕获组,抓取两位小写字母的区域代码(比如us、ca)
    • /:匹配语言-区域组合后的分隔斜杠
    • (.*):第三个捕获组,抓取斜杠后的任意内容(就是你说的anything.html或其他任意字符串)
  • 跳转目标:/content/company/$2/$1/$3

    • $2:引用第二个捕获组的区域代码(比如把us、ca放在前面)
    • $1:引用第一个捕获组的语言代码(调整到区域代码之后)
    • $3:原封不动引用第三个捕获组的内容(保留原请求的页面部分)
  • 规则标志:[R=301,L]

    • R=301:表示永久重定向(如果是临时测试跳转,可改成R=302)
    • L:标记为最后一条规则,匹配成功后不再执行后续Rewrite规则

实际匹配示例

举几个真实场景验证效果:

  • 请求/en-us/anything.html → 跳转至/content/company/us/en/anything.html
  • 请求/en-ca/abc.html → 跳转至/content/company/ca/en/abc.html
  • 请求/fr-ca/def → 跳转至/content/company/ca/fr/def

注意事项

  • 确保你的Apache服务器已经启用了mod_rewrite模块
  • 规则可放在.htaccess文件(需服务器允许)或Apache虚拟主机配置中
  • 如果路径可能包含大写字母,可把正则里的[a-z]{2}改为[a-zA-Z]{2}以兼容大小写

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:19:02