Ответ 1
Я думаю, вы должны иметь возможность использовать обработчик маршрута по умолчанию и перенаправлять оттуда на страницу вне приложения, как описано ниже:
const ROUTER_INSTANCE = new VueRouter({
mode: "history",
routes: [
{ path: "/", component: HomeComponent },
// ... other routes ...
// and finally the default route, when none of the above matches:
{ path: "*", component: PageNotFound }
]
})
В приведенном выше определении компонента PageNotFound
вы можете указать фактическое перенаправление, которое полностью выведет вас из приложения:
Vue.component("page-not-found", {
template: "",
created: function() {
// Redirect outside the app using plain old javascript
window.location.href = "/my-new-404-page.html";
}
}
Вы можете сделать это либо на крюке created
, как показано выше, либо на mounted
.
Обратите внимание:
-
Я не проверил выше. Вам нужно создать производственную версию приложения, чтобы произошло перенаправление выше. Вы не можете проверить это в
vue-cli
, так как это требует обработки на стороне сервера. -
Обычно в приложениях с одной страницей сервер отправляет один и тот же index.html вместе со сценариями приложения для всех запросов маршрута, особенно если вы установили
<base href="/">
. Это не удастся для вашего/404-page.html
, если ваш сервер не рассматривает его как особый случай и служит для статической страницы.
Сообщите мне, если это работает!