Почему Vue Rouge Regex запускается на всех путях? - PullRequest
0 голосов
/ 05 сентября 2018

Я использую VueJS2 и у меня возникли проблемы с маршрутизатором.

Мои маршруты настроены следующим образом:

import TypeoneSignup from "../components/typeone-signup";
import TypetwoSignup from "../components/typetwo-signup";
import SomeSecretPath from "../components/some-secret-path";
import RegisterSecretRecord from "../components/register-secret-record";
import RegisteredSuccess from "../components/registered-success";
import ErrorView from "../components/error-view";
import FourOhFour from "../components/four-oh-four";
import TargetPage from "../components/targetpage-redirect";

export const routes = [
    {
        name: 'Ttypeone-signup',
        path: '/signup-typeone',
        component: TypeoneSignup
    },
    {
        name: 'typetwo-signup',
        path: '/signup-typetwo',
        component: TypetwoSignup
    },
    {
        name: 'some-secret-path',    
        path: '/some-secret-path/:token',
        component: SomeSecretPath,
        props: (route) => ({ token: route.params.token })
    },
   {
       name: 'registered-success',
       path: '/success',
       component: RegisteredSuccess
   },
   {
       name: 'error',
       path: '/error',
       component: ErrorView
   },
   {
       name: 'register-secret-record',
       path: '/register-secret-record/:token',
       component: RegistersecretRecord,
       props: (route) => ({ token: route.params.token })
   },
   {
       name: '404',
       path: '/404',
       component: FourOhFour
   },
   {
       name: 'targetpage',
       path: '(/?)$',
       component: TargetPage
   },
    {
     path: '*',
     redirect: '404'
   }
];

Я пытаюсь добиться того, чтобы каждый раз, когда пользователь заходил на mydomain.com или mydomain.com/, его перенаправляли на myotherdomain.com. Вот что делает targetpage-redirect.

Однако пользователь не должен быть перенаправлен, если он входит в mydomain.com/anypath, поскольку существуют определенные пути, к которым ему необходимо получить доступ в определенные моменты времени. По сути, я пытаюсь настроить перенаправление в стиле «первой страницы».

Проблема, однако, в том, что TargetPage, похоже, «срабатывает» на всех без исключения URL / путях.

Я пытался проверить это с помощью Express route tester , и он говорит, что он должен корректно запускаться только на путях, которые содержат одну косую черту или нет, а затем заканчивается.

Так, что вызывает перенаправление со всех других путей?

Edit: Итак, оглянувшись вокруг и беспорядочно комментируя фрагменты кода, кажется, что проблема не в самом регулярном выражении, а в

import TargetPage from "../components/targetpage-redirect";

часть, которая каким-то образом заставляет запускаться скрипт на странице. Перенаправление моей целевой страницы выглядит следующим образом:

<template>

</template>
<script>
    window.location.replace("https://myotherdomain.com");

</script>

Может ли быть правдой, что подобная страница не может быть импортирована без выполнения сценария, или я что-то совершенно неправильно понимаю.

1 Ответ

0 голосов
/ 05 сентября 2018

Вам не нужно использовать фиктивный компонент для этого, вы должны просто использовать beforeEnter:

{
    path: '(/?)$',
    beforeEnter(to, from, next) {
        window.location = 'https://myotherdomain.com'
    }
}

Подробнее: https://router.vuejs.org/guide/advanced/navigation-guards.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...