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

Next.js中能否同时配置URL重定向与重写?Vercel多域名场景问题

解决Vercel多域名下重写与重定向的无限循环问题

你当前的配置会触发无限循环,原因很直接:

  • 当用户访问www.secondary-domain.com/时,rewrite规则会把请求转发到www.primary-domain.com/about
  • 而www.primary-domain.com/about又会被redirect规则重定向回www.secondary-domain.com/
  • 这样请求就在两个域名之间来回跳转,形成死循环

要解决这个问题,核心是让重写和重定向规则只针对各自的域名生效,避免交叉触发。修改你的next.config.js如下:

/** @type {import('next').NextConfig} */
const nextConfig = {
  async rewrites() {
    return [
      {
        // 仅匹配来自secondary域名的根路径请求
        source: '/',
        destination: 'https://www.primary-domain.com/about',
        has: [
          {
            type: 'host',
            value: 'www.secondary-domain.com'
          }
        ]
      }
    ]
  },
  async redirects() {
    return [
      {
        // 仅匹配来自primary域名的/about路径请求
        source: '/about',
        destination: 'https://www.secondary-domain.com',
        permanent: true,
        has: [
          {
            type: 'host',
            value: 'www.primary-domain.com'
          }
        ]
      }
    ]
  }
}

module.exports = nextConfig

配置说明

  • 重写规则:通过has参数限定只有当请求的Host是www.secondary-domain.com时,才会把根路径转发到主域名的/about页面,这样不会影响主域名自身的请求
  • 重定向规则:同样通过has参数限定只有主域名的/about请求才会被重定向到secondary域名,避免secondary域名的请求触发这条规则

额外注意事项

  1. 确保两个域名都已经正确添加到Vercel项目的「Domains」列表中,并且完成了DNS解析验证
  2. 如果需要支持非www前缀的域名(比如secondary-domain.com),可以在has的value里添加对应的域名,或者使用通配符(比如*.secondary-domain.com)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:01:01