Nuxt 404 错误页面应重定向到主页

mau*_*tin 6 seo vue.js nuxt.js

我正在寻找一种在使用 Nuxt.Js 的页面不存在时始终重定向到主页的方法。

几天前,我们的站点地图生成出现了一些问题,我们提交了不存在的错误网址。Google Search Console 显示大量 404,我们希望通过 301 重定向到主页来修复它们。

我试过这个

created() {
    this.$router.push(
      this.localePath({
        name: 'index',
        query: {
          e: 'er'
        }
      })
    )
  }

Run Code Online (Sandbox Code Playgroud)

虽然页面成功重定向到主页,但我认为谷歌会遇到这个问题,因为页面最初是用 404 呈现的。

我也试过这个

  async asyncData({ redirect }) {
    return redirect(301, '/el?e=rnf')
  },

Run Code Online (Sandbox Code Playgroud)

但没有用(与 fetch 相同)

关于解决这个问题的任何想法?

Leo*_*nte 9

如果找不到页面,切勿重定向到主页,正如您在 Google 的文章中看到的那样:创建自定义 404 页面

相反,重定向到 404 错误页面

只需使用error

 async asyncData({ params, $content, error }) {
    try {
      const post = await $content('blog', params.slug).fetch()
      return { post }
    } catch (e) {
      error({ statusCode: 404, message: 'Post not found' })
    }
  }
Run Code Online (Sandbox Code Playgroud)

不要忘记在布局文件夹中创建错误页面error.vue


小智 4

您可以在 nuxt 中创建默认的 404 页面 - 只需将一个名为 _.vue 的文件放在 ~/pages/ 目录中即可。这是你的 404 页 :)

或者您可以使用另一种方法来创建此类页面: https: //github.com/nuxt/nuxt.js/issues/1614但我还没有尝试过

然后在此页面添加一个简单的404-redirect-middleware:

// !!! not tested this code !!!
middleware: [
  function({ redirect }) {
    return redirect(301, '/el?e=rnf')
  },
],
Run Code Online (Sandbox Code Playgroud)