У меня есть целевая страница с регистрацией / входом, которая перенаправляет на главную страницу с контентом. После успешного входа в систему я перенаправляю так:

this.$router.push({ name: 'main' })

И это работает, но если я обновляю страницу или пытаюсь получить к ней доступ с URL-адреса, например, http: //testapp.test/ main Я получаю сообщение об ошибке: Страница не существует 404. В настоящее время у меня нет никакой защиты от доступа к страницам, которые предназначены только для авторизованных пользователей, я также добавил путь «*» в маршрутизаторе для неопределенных маршрутов, и он также просто выдает 404 вместо загрузки домашней страницы. Вот настройки моего роутера:

import Vue from 'vue'
import VueRouter from 'vue-router'
import BootstrapVue from 'bootstrap-vue'
import {store} from './store/store'

Vue.use(BootstrapVue);
Vue.use(VueRouter);

window.Vue = require('vue');


import Home from './components/LandingPage.vue'
import Main from './components/MainPage.vue'
import Logout from './components/Logout.vue'

const router = new VueRouter({
    mode: 'history',
    routes: [
        {
            path: '/',
            name: 'home',
            component: Home,
        },
        {
            path: '/main',
            name: 'main',
            component: Main,
        },
        {
            path: '/logout',
            name: 'logout',
            component: Logout,
        },
        {
            path :'*',
            name: 'home',
            component: Home,
        }
    ],
});


const app = new Vue({
    el: '#app',
    components: { Home, Main, Logout },
    router,
    store,
});

Я пробовал с https://router.vuejs.org /guide/essentials/history-mode.html#example-server-configurations, но я не уверен, правильно ли я сделал это. Я скопировал код для конфигурации apache и заменил им существующий код в .htaccess. Но тогда даже маршрут из входа в систему перестает работать, и если я получаю доступ к / main, он дает мне ошибку 404.

1
Miko 14 Сен 2018 в 15:55

2 ответа

Лучший ответ

Я решил это добавлением

Route::get('/{vue_capture?}', function () { return view('welcome'); })->where('vue_capture', '[\/\w\.-]*');

В файл web.php

1
Miko 17 Сен 2018 в 10:59

Для этого вам также необходимо выполнить конфигурацию на стороне сервера .. В качестве альтернативы вы можете попробовать другие режимы маршрутизатора? как "хеш"

Вот документация по режиму и конфигурации сервера.

https://router.vuejs.org/api/#mode

https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations

0
tanaydin 14 Сен 2018 в 12:59