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