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

NextJS 13+ 子域名重写问题:archives子域名二级页面404

问题原因与修复方案

核心错误点

  • Host匹配规则错误:你在has数组中给host类型的value设置了archives.localhost/:path*,但host匹配仅针对域名部分,不需要包含路径,路径由source字段处理,这个错误导致带路径的请求(比如archives.localhost:3000/test)无法触发预期的重写规则。
  • 路径正则匹配冗余:原source的正则表达式/:path((?!api|auth|_next).)*写法冗余,且因为host规则失效,带路径的请求会直接走fallback规则,导致请求被映射到原路径而非/archives下的对应页面,最终出现404。

修复后的配置代码

/** @type {import('next').NextConfig} */
const nextConfig = {
    experimental: {
        missingSuspenseWithCSRBailout: false,
    },
    async rewrites() {
        return {
            beforeFiles: [
                // 将 archives.localhost 域名下的请求重写到 /archives 路径
                {
                    source: '/:path*',
                    has: [
                        {
                            type: 'host',
                            value: 'archives.localhost',
                        },
                    ],
                    destination: '/archives/:path*',
                },
                // 保留默认 fallback 规则
                {
                    source: '/:path*',
                    destination: '/:path*',
                }
            ]
        }
    }
}

export default nextConfig;

修复说明

  1. 修正Host匹配:将host的value改为纯域名archives.localhost,确保所有来自该域名的请求都能触发重写规则。
  2. 简化source规则:直接使用/:path*匹配域名下所有路径,Next.js内部的api、auth、_next等路径会自动跳过该重写,无需额外排除。
  3. 重写逻辑生效:现在访问archives.localhost:3000/会被重写到/archives/,访问archives.localhost:3000/test会被正确映射到/archives/test,对应页面就能正常加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:39:53