Nuxt 404 错误页面应该重定向到主页
Nuxt 404 error page should redirect to homepage
我正在寻找一种方法,当页面不存在时使用 Nuxt.Js 始终重定向到主页。
几天前,我们的站点地图生成出现了一些问题,我们提交了不存在的错误网址。 Google Search Console 显示大量 404,我们想通过 301 重定向到主页来修复它们。
我试过了
created() {
this.$router.push(
this.localePath({
name: 'index',
query: {
e: 'er'
}
})
)
}
虽然页面成功重定向到主页,但我认为 Google 会遇到问题,因为页面最初以 404 呈现。
我也试过这个
async asyncData({ redirect }) {
return redirect(301, '/el?e=rnf')
},
但没有成功(与 fetch 相同)
有什么解决方案吗?
您可以在 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')
},
],
我个人建议创建一个 404 页面,与被重定向到主页并可能对发生的事情感到困惑相比,它提供更好的用户体验。
要创建自定义错误页面,只需在 layouts folder
中创建 error.vue
文件并将其视为页面。参见official documentation。我们已经实施了很多次,Google 从未抱怨过。
不过,gleam 的解决方案很聪明,如果能达到目的,那就太好了。只是想指出另一个解决方案。
如果您需要为您的用户提供自定义路由,例如 domain.com/<userID>
然后将名称为 _.vue
的文件放入 ~/pages/
目录将不起作用,因为自定义用户路由需要它。
为了获得最大的灵活性,请使用 Dan
提到的布局文件夹
在 pages
目录创建名为 _.vue
的文件,内容为:
<script>
export default {
asyncData ({ redirect }) {
return redirect('/')
}
}
</script>
如果找不到页面,永远不会重定向到主页as you can see in this Google's article: Create custom 404 pages
相反,重定向到 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' })
}
}
不要忘记在布局文件夹中创建错误页面 error.vue
我正在寻找一种方法,当页面不存在时使用 Nuxt.Js 始终重定向到主页。
几天前,我们的站点地图生成出现了一些问题,我们提交了不存在的错误网址。 Google Search Console 显示大量 404,我们想通过 301 重定向到主页来修复它们。
我试过了
created() {
this.$router.push(
this.localePath({
name: 'index',
query: {
e: 'er'
}
})
)
}
虽然页面成功重定向到主页,但我认为 Google 会遇到问题,因为页面最初以 404 呈现。
我也试过这个
async asyncData({ redirect }) {
return redirect(301, '/el?e=rnf')
},
但没有成功(与 fetch 相同)
有什么解决方案吗?
您可以在 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')
},
],
我个人建议创建一个 404 页面,与被重定向到主页并可能对发生的事情感到困惑相比,它提供更好的用户体验。
要创建自定义错误页面,只需在 layouts folder
中创建 error.vue
文件并将其视为页面。参见official documentation。我们已经实施了很多次,Google 从未抱怨过。
不过,gleam 的解决方案很聪明,如果能达到目的,那就太好了。只是想指出另一个解决方案。
如果您需要为您的用户提供自定义路由,例如 domain.com/<userID>
然后将名称为 _.vue
的文件放入 ~/pages/
目录将不起作用,因为自定义用户路由需要它。
为了获得最大的灵活性,请使用 Dan
提到的布局文件夹在 pages
目录创建名为 _.vue
的文件,内容为:
<script>
export default {
asyncData ({ redirect }) {
return redirect('/')
}
}
</script>
如果找不到页面,永远不会重定向到主页as you can see in this Google's article: Create custom 404 pages
相反,重定向到 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' })
}
}
不要忘记在布局文件夹中创建错误页面 error.vue