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

Next.js中子域名转子路径的URL重写/重定向实现问题

关于Next.js重写规则的问题解答

1. 协议+子域名是否属于source范围?

Next.js的rewrites配置里,source只负责匹配请求的路径部分(必须以/开头),协议、域名、子域名都不属于source的匹配范围。你之前写完整URL作为source的写法是错误的,这也是报错的直接原因。

2. 变量的: 和*用法

  • 变量前必须加: ,用来标记这是一个动态参数,比如:postOrProgramId就是提取子域名里的动态部分。
  • *是通配符,用来匹配剩余的全部内容,如果你需要把子域名的完整内容都转成路径,就需要在变量后面加*,比如:postOrProgramId*。

3. 子域名转子路径的正确配置

要实现子域名(如amazing-campaign-in-nyc.tikex-dev.com)转主域名路径(tikex-dev.com/amazing-campaign-in-nyc),需要用rewrites的has数组来匹配请求的host(子域名),然后提取动态参数到destination里。具体配置如下:

async rewrites() {
  return [
    {
      // 匹配所有子域名(除了主域名本身)
      has: [
        {
          type: 'host',
          value: ':postOrProgramId*.tikex-dev.com',
        },
      ],
      // 匹配根路径及后续嵌套路径
      source: '/:path*',
      // 把提取的子域名参数放到主域名的路径里
      destination: '/:postOrProgramId*/:path*',
    },
  ];
}

注意:本地开发环境下,Next.js默认不支持自定义host匹配,你需要修改本地hosts文件,把测试子域名指向127.0.0.1,并且启动项目时指定域名:next dev -H tikex-dev.com,才能在本地测试这个规则。

4. 两条重写规则是否会冲突?

不会冲突。你的两条规则匹配逻辑完全不同:

  • 第一条是通过host匹配子域名请求,然后转主域名路径;
  • 第二条是匹配路径以/api/开头的请求,反向代理到API服务器。

Next.js会先根据请求的host和路径匹配对应的规则,两者的触发条件没有重叠,所以不会互相影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:12:37