Сложный редирект в vue router

1

Я использую vue-router в многостраничном приложении; мы добавляем режим истории, потому что наши требования настаивают на том, чтобы наши URL-адреса не содержали специальных символов (#), и хотим убедиться, что из нашего кода внешнего интерфейса мы всегда добавляем наши клиентские маршруты с /v/. (чтобы избежать необходимости обновлять все наши маршруты во всем приложении и централизовать эту функцию).

Я хочу добавить маршрут, похожий на:

routes: [
    // add 'v/' to paths that don't start with 'v/'
    { 
      path: '(^\/(?!v))*', 
      redirect: to => '/v/${to}' 
    },
]

Основанный на использовании регулярных выражений внутри path-to-regexp, но я не совсем ясно из их документации, как правильно передать весь маршрут как регулярное выражение (или это возможно?), Особенно без попадания в цикл перенаправления.

Теги:
vue-router

1 ответ

0

Я смог использовать 2 перенаправления, чтобы добиться того, что мне было нужно (в данном случае откат до "/" как 404.

// Fallback to baseRoute for prefixed unmatched routes
{ path: '${prefix}/*', redirect: '/' },
// Fallback to baseRoute for unprefixed, unmatched routes (try again with prefix)
{ path: '*', redirect: to => prefix + to.path }

(Интересно, что в функции перенаправления значение to остается неизменным, если вы перенаправлены, поэтому у меня изначально был бесконечный цикл. to => to.path.startsWith(prefix)? '/': prefix + to.path)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню