`NextResponse.redirect()` 中的重定向状态代码不适用于主页

Ali*_*asi 6 seo redirect node.js next.js

我在我的应用程序中使用next.js,出于 SEO 目的,我在 url 内使用区域设置。因此,为了响应www.domain.com我使用服务器端重定向来重定向到具有区域设置的域(例如:www.domain.com/en.)

为了完成任务,我使用 next.js 中间件,基于next.js 文档提供的示例:

import { NextMiddleware, NextRequest, NextResponse } from "next/server";

const PUBLIC_FILE = /\.(.*)$/;

export const middleware: NextMiddleware = (request: NextRequest) => {
  const shouldHandleLocale =
    !PUBLIC_FILE.test(request.nextUrl.pathname) &&
    !request.nextUrl.pathname.includes("/api/") &&
    request.nextUrl.locale === "default";

  if (shouldHandleLocale) {
    const url = request.nextUrl.clone();
    url.pathname = `/en${request.nextUrl.pathname}`;
    return NextResponse.redirect(url, 308);
  }

  return undefined;
};
Run Code Online (Sandbox Code Playgroud)

因此,在函数中,我返回308NextResponse.redirect()状态代码,以永久分配重定向类型。(如果您想了解重定向类型,请阅读此处的文档)

它在应用程序上的所有页面上运行良好,除了主页 ( "/") 之外,其中对主域 ( www.domain.com) 的第一个请求响应状态代码307,该状态代码表示临时重定向,谷歌搜索中心将其描述为“弱信号”

关于返回类型状态代码,我仍然需要做一些研究,了解哪一个更适合 SEO 问题,如果您能提供帮助,我将不胜感激。

但我的主要问题是为什么状态代码分配不适用于主页链接。

非常感谢您的帮助

afk*_*tja -1

从我在接下来的类型定义中看到的,重定向签名如下所示:

static redirect(url: string | NextURL | URL, init?: number | ResponseInit): NextResponse;
Run Code Online (Sandbox Code Playgroud)

其中init包含nextConfig.

重定向方法不接受任何状态代码。