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

Next.js 14 App Router多语言站点robots.txt访问404求助

问题排查与解决方案

你的问题核心是中间件(middleware)的路径重写逻辑误处理了robots.txt请求,导致请求被重定向/重写到带语言前缀的路径(比如/en/robots.txt),而你并没有在对应语言目录下配置该文件,因此返回404。以下是具体解决步骤:

1. 更新中间件的匹配规则,排除robots.txt

修改middleware.js中的config.matcher,将robots.txt加入排除列表,让中间件不再处理该请求:

export const config = {
  matcher: ["/((?!api|_next/static|_next/image|favicon.ico|robots.txt).*)"]
};

2. 确认robots.txt的正确放置位置

根据Next.js 14 App Router的规则,robots.txt有两种配置方式:

  • 静态文件方式:直接将robots.txt放在项目根目录的public/文件夹下,Next.js会自动对外提供http://localhost:3000/robots.txt的访问。
  • 动态生成方式:在app/robots.txt/目录下创建route.js文件,通过代码动态生成内容,示例:
    export function GET() {
      return new Response(`User-agent: *
    

Allow: /
Sitemap: http://localhost:3000/sitemap.xml`, {
headers: { 'Content-Type': 'text/plain' },
})
}

## 3. 清除浏览器缓存后测试
浏览器可能会缓存之前的404响应,测试前先清除缓存或使用无痕模式访问`http://localhost:3000/robots.txt`。

## 为什么之前添加`robots.txt`到matcher没生效?
你提到尝试过加入matcher但没解决,可能是修改后的代码没有热更新生效,或者缓存导致的。确保保存代码后,Next.js开发服务器已重新加载,必要时重启服务器验证。

内容的提问来源于stack exchange,提问作者oladimeji
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:58:14