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

如何通过Nginx将URL部分路径重定向至新域名

Nginx URL重定向:移除旧路径前缀保留目标部分

你的问题出在正则捕获的范围不对——原来的规则rewrite ^(/app1/app2.*) https://server2.com$1 permanent;把/app1/app2整个都捕获成了$1,所以新URL自然会带上/app1/前缀。要实现只保留/app2及之后的内容,需要调整正则的捕获分组,精准截取需要的部分。

正确配置方案

有两种等价的写法,选你习惯的就行:

写法一:捕获/app2及之后的完整路径

server {
    listen 443 ssl;
    server_name server1.com;

    location ^~ /app1/app2 {
        # 正则匹配/app1/开头,捕获/app2及之后的所有内容
        rewrite ^/app1(/app2.*) https://server2.com$1 permanent;
    }

    # 其他SSL、静态资源等配置...
}

写法二:单独捕获/app2后面的内容

server {
    listen 443 ssl;
    server_name server1.com;

    location ^~ /app1/app2 {
        # 匹配/app1/app2开头,捕获后面的所有内容(包括空)
        rewrite ^/app1/app2(.*)$ https://server2.com/app2$1 permanent;
    }
}

效果验证

两种写法都能实现你的需求:

  • 原URL https://server1.com/app1/app2 → 重定向到 https://server2.com/app2
  • 原URL https://server1.com/app1/app2/link1 → 重定向到 https://server2.com/app2/link1
  • 原URL https://server1.com/app1/app2/link2?param1=value1 → 重定向到 https://server2.com/app2/link2?param1=value1

补充说明

  • location ^~ /app1/app2 是为了优先匹配这个路径,避免被其他location规则干扰;
  • Nginx的rewrite默认会自动保留原请求的查询参数,所以不需要手动在目标URL里添加?param1=value1这类内容;
  • permanent代表301永久重定向,适合SEO场景,如果是临时重定向可以改成redirect(302)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:42:46