使用NextJs将www永久重定向到非www站点

ia2d9nvy  于 2024-01-07  发布在  其他
关注(0)|答案(1)|浏览(94)

bounty将在5天后过期。回答此问题可获得+50声望奖励。Eric_WVGG希望引起更多关注此问题。

我用Nextjs建了一个网站(使用版本12.1.4).出于搜索引擎优化的目的,我想为我的网站的www版本永久重定向到我的non-www .通常这可以很容易地与nginx或.htaccess文件与Apache完成.然而,在Digitalocean上托管的静态网站没有运行Apache或Nginx,所以.htaccess文件不会这样做。我已经读到这应该可以使用Nextjs redirects
我尝试了以下3个重定向:

redirects: async () => [
    {
      source: '/:path*',
      has: [
        {
          type: 'host',
          value: 'www',
        },
      ],
      destination: '/:path*',
      permanent: true,
    },
  ],

---------------------------------------------------

  redirects: async () => [
    {
      source: '/:path*/',
      has: [
        {
          type: 'host',
          value: 'www',
        },
      ],
      destination: '/:path*/',
      permanent: true,
    },
  ],

------------------------------------------------------

  redirects: async () => [
    {
      source: '/:path*',
      has: [{ type: 'host', value: 'https://www.cvtips.nl/' }],
      destination: 'https://cvtips.nl/:path*',
      permanent: true,
    },
  ],

字符串
我不知道这是否相关,但我在配置中确实使用了trailingSlash: true
接下来我尝试添加一个中间件文件,我都尝试在根目录下添加并命名为middleware.js,在pages文件夹中命名为_middleware.js
这是我用于重定向的代码:

--> https://github.com/vercel/next.js/discussions/33554
import { NextRequest, NextResponse } from 'next/server';

export function middleware(req: NextRequest) {
  const host = req.headers.get('host');
  const wwwRegex = /^www\./;
  // This redirect will only take effect on a production website (on a non-localhost domain)
  if (wwwRegex.test(host) && !req.headers.get('host').includes('localhost')) {
    const newHost = host.replace(wwwRegex, '');
    return NextResponse.redirect(`https://${newHost}${req.nextUrl.pathname}`, 301);
  }
  return NextResponse.next();
}


也根本不起作用...不起任何我相信的作用。
如何将Nextjs网站从www重定向到non-www

ipakzgxi

ipakzgxi1#

尝试删除https://,如果您在本地机器上测试它,您应该重新启动服务器。从Next.js 12开始,中间件在边缘运行,这意味着它在Vercel边缘网络或其他支持的平台上尽可能靠近用户执行。DigitalOcean托管Next.js应用程序的标准方法涉及使用DigitalOcean Droplet configured和Nginx作为反向代理。

redirects: async () => [
  {
    source: '/:path*',
    has: [
      {
        type: 'host',
        value: 'www.cvtips.nl',
        // remove 👆 https://
      },
    ],
    destination: 'https://cvtips.nl/:path*',
    permanent: true,
  },
],

字符串

相关问题