Tôi đang cố gắng để chuyển hướng đến 404.html trên trang không tìm thấy bằng cách sử dụng móc toàn cầu router.beforeEach
, mà không có nhiều thành công (sử dụng Vue
và Vue-Router
1.0):Vue-router chuyển hướng trên trang không tìm thấy (404)
router.beforeEach(function (transition) {
if (transition.to.path === '/*') {
window.location.href = '/404.html'
} else {
transition.next()
}
});
Điều này không chuyển hướng đến trang 404.html
khi một tuyến đường không tồn tại được chèn vào, chỉ cần cho tôi một đoạn trống. Chỉ khi hard-coding some-site.com/* nó sẽ chuyển hướng đến một số trang web mong đợi some-site.com/404.html
Tôi chắc chắn có điều gì đó rất rõ ràng ở đây mà tôi đang xem, nhưng tôi không thể hình dung ra cái gì.
Xin lưu ý rằng những gì tôi đang tìm kiếm là một chuyển hướng đến một trang mới, không phải là một chuyển hướng sang một con đường, mà có thể dễ dàng đạt được bằng cách sử dụng router.redirect
chẳng hạn như trong những đoạn:
router.redirect({
'*': '404'
})
trong khi trên router.map
của tôi, tôi có thể có những điều sau đây:
router.map({
'/404': {
name: '404'
component: {
template: '<p>Page Not Found</p>'
}
}
})
Tôi chưa có giải pháp, nhưng điều gì xảy ra nếu bạn cố điều hướng đến tuyến đường bằng cách sử dụng thẻ '' không được bộ định tuyến Vue xử lý? Liệu nó di chuyển ra khỏi ứng dụng? – Mani
Nó sẽ điều hướng đến tuyến đường dự kiến bất kể tôi sử dụng href hoặc v-link (ví dụ: href = "http://some-site.com/home" thay vì v-link = "{name: 'home' } "). Bạn không chắc chắn nếu đó là những gì bạn đang yêu cầu? – pierrebonbon
Lời xin lỗi của tôi, tôi đã nghĩ về cách thoát khỏi ứng dụng hoàn toàn ngay cả khi chúng ta có ' '. Điều đó không liên quan đến câu hỏi của bạn. Tôi đã đăng những suy nghĩ của tôi như là một câu trả lời dưới đây, hãy thử nó ra và cho tôi biết nếu nó hoạt động! –
Mani