0
A
回答
3
有几个方法可以做到这一点。
最通用的一种是检查路径是否匹配任何路线,然后重定向到未找到页面。
router.beforeEach((to, from, next) => {
if (!to.matched.length) {
next('/notFound');
} else {
next();
}
});
参见JSFiddle。
-2
对于我所做的是我给一个http-found
类的父div所有我的组件和我装载挂钩的App.vue我检查使用jQuery或Javascript,如果有任何元素类http-found
如果不是我重定向到我的404页面。
App.vue
mounted(){
if(!$('.http-found')){
this.$router.push('/404')
}
}
10
在路由声明,我想补充一点:
[
...
{ path: '/404', component: NotFound },
{ path: '*', redirect: '/404' },
...
]
这将意味着,如果用户导航到不匹配任何路线的路径,它会被重定向到“404”路由,它将包含“未找到”消息。
我把它分成两条路由的原因是,当你需要的某些数据不能解决时,你也可以通过编程的方式将用户导向404路由。
举例来说,如果你正在创建一个博客,你可能有这样的路线:
{ path: '/posts/:slug', component: BlogPost }
这将解决,即使所提供的鼻涕虫实际上还不能获取任何博客文章。为了解决这个问题,当你的应用确定后没有被发现,做
return this.$router.push('/404')
或
return router.push('/404')
,如果你不是在Vue公司组件的上下文。
但有一点需要记住的是,处理找不到响应的正确方法不仅仅是提供错误页面 - 您应该尝试向浏览器提供实际的HTTP 404响应。如果用户已经在单页面应用程序中,那么您不需要这样做,但是如果浏览器将该示例博客文章作为其初始请求,则服务器应该返回404代码。
+0
如何你是否在组件内的asyncData方法中工作? – Borjante
相关问题
- 1. VueJS + VueRouter:有条件地禁用路由
- 2. 如何在VueJS的组件中创建动态类值?
- 3. 如何在Laravel的某些页面上初始化Vuejs + VueRouter
- 4. VueRouter,VueJS和Laravel路线卫兵
- 5. Vue和VueRouter创建单独的组件的实例
- 6. 在Vuejs组件中使用videojs-vr
- 7. VueJS组件使用scrollIntoView()
- 8. 如何在单个文件组件中使用VueJS 2全局组件?
- 9. 如何在Laravel Spark的构建系统中使用vuejs插件?
- 10. 引用在VueJS组件
- 11. 如何使用Angular创建TypeScript组件?
- 12. 重用VueJS组件
- 13. 如何导入Vuejs中的组件2
- 14. 使用Django 1.4创建404
- 15. 创建使用滑动动画Vuejs
- 16. API 404使用VueJs,ExpressJs和猫鼬
- 17. 如何在vuejs中启用禁用组件
- 18. Vuejs - 如何在使用插槽时呈现子组件的vnodes
- 19. 如何在使用Vuex时测试Vuejs组件
- 20. 如何创建404页面?
- 21. SPA,中间件和VueRouter
- 22. 无法渲染VueRouter的子组件
- 23. Vueify/VueRouter/Laravel - 组件没有定义
- 24. 如何在joomla1.6中创建新组件?
- 25. 如何在Tapestry 5中创建组件?
- 26. 如何在Swing中创建此组件?
- 27. 如何在Joomla 1.5中创建组件?
- 28. 如何在javascript中创建html组件
- 29. 如何在Perl中使用两个组件创建绝对URL?
- 30. 如何使用primeNG在AngularCli中创建菜单组件?
[Vue路由器重定向页面未找到(404)](https://stackoverflow.com/questions/40193634/vue-router-redirect-on-page-not-found-404)的可能重复 – PatrickSteele