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

如何实现Nginx带语言参数的子路径重定向?

Nginx子路径重定向到带语言参数路径的解决方案

原有的rewrite ^/$ /$lang/ redirect;规则仅匹配根路径,无法覆盖子路径场景。要实现所有不带语言前缀的路径自动重定向到对应带$lang前缀的路径,可按以下步骤配置:

1. 确保$lang变量正确初始化

首先要保证$lang变量已通过合理方式获取(比如从Cookie、请求头读取,或设置默认值),示例配置:

# 优先从cookie获取语言,默认设为en
set $lang en;
if ($cookie_user_lang) {
    set $lang $cookie_user_lang;
}

2. 调整重定向规则

使用负向预查正则避免对已带语言前缀的路径重复重定向,同时匹配所有需要处理的路径:

# 匹配所有非$lang前缀的路径,重定向到带$lang前缀的对应路径
rewrite ^/(?!$lang/)(.*)$ /$lang/$1 redirect;

规则说明

  • ^/(?!$lang/):负向预查,确保当前路径不是以/$lang/开头,避免循环重定向
  • (.*):捕获根路径之后的所有内容(包括空字符串,对应根路径场景)
  • redirect:触发临时重定向(302),若需永久重定向可替换为permanent(301)

3. 特殊场景处理

如果有无需重定向的路径(比如静态资源目录),可在正则中添加排除项:

# 排除static目录和$lang前缀路径,其余路径重定向
rewrite ^/(?!$lang/|static/)(.*)$ /$lang/$1 redirect;

验证方式

用curl命令测试重定向效果:

# 测试子路径重定向
curl -I https://www.example.com/test
# 测试根路径重定向
curl -I https://www.example.com/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:03:30