Ошибка Vuejs / Nuxt 404 при загрузке /index.html непосредственно

#javascript #vue.js #nuxt.js #vue-router

#javascript #vue.js #nuxt.js #vue-маршрутизатор

Вопрос:

Я пытаюсь создать одностраничное приложение, но, судя по всему, я не могу заставить функциональность работать именно таким образом.

Если вы попали непосредственно в /index.html файл, вы переходите на страницу 404.

Если вы перейдете к тому же маршруту без индекса, такого как «/», это сработает. Однако из-за среды, которую я использую, мне нужно загрузить index.html файлы непосредственно в URL-адресе, например, /mydirectory/index.html и /index.html и т.д.

Есть ли способ добиться этого?

Для nuxt я могу настроить все ссылки напрямую с помощью href= на правильный index.html файлы, но vuejs просто выдаст сообщение об ошибке, как будто он не понимает маршрут.

В качестве примера я попытался настроить маршруты в nuxt для просмотра прямых путей, и это также не удалось, никаких изменений не внес. (Я использую новую установку nuxt для тестирования)

 router: {

        routes: [
            {
                name: 'index',
                path: '/index.html',
                component: 'pages/index.vue'
            },
            {
                name: 'inspire',
                path: '/inspire/index.html',
                component: 'pages/inspire.vue'
            }
        ]
    },
 

Загрузка в адресной строке /index.html (404 -ошибка) по сравнению с «/», который работает.

Если кто-нибудь спросит, зачем мне это нужно? Это не для веб-сайта, иначе мне не нужно было бы этого делать, но, основываясь на функциональности Vue / Nuxt, это должно быть возможно, потому что nuxt уже сгенерировал статические html-файлы для этих местоположений, и он загружается, но из-за маршрутизации он этого не понимает.

Я использую ssr: false и target: 'static'

Редактировать:

Изучив глобальные объекты nuxt и обнаружив, что это детали маршрута

 _route:
  fullPath: "/index.html"
  hash: ""
  matched: []
  meta: {}
  name: null
  params: {}
  path: "/index.html"
  query: {}
 

Очевидно, что путь указывает /index.html , поэтому он может просто отлично считывать путь, и я даже вручную настроил это в конфигурации маршрутизатора, чтобы быть уверенным, но он даже не хочет его связывать, показывает ошибку 404.

Обновить:

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

Во-первых, Nuxt удалил конфигурацию маршрутов, которую я пробовал выше, и в пользу использования extendRoutes(routes) now, поэтому изначально она не работала. Однако, когда я попытался обновить сами маршруты, generate выдал бы ошибку, потому что он попытался создать каталоги для /index.html/index.html not good. Так что это не сработает.

https://github.com/nuxt/nuxt.js/issues/112

Во-вторых, затем я наткнулся на этот пост, где вы можете использовать псевдоним маршрута, и он получил результат загрузки /index.html и, похоже, загружается без ошибки 404.

https://www.reddit.com/r/Nuxt/comments/gzwrqu/visiting_generated_site_routes_with_trailing/ftnylrt?utm_source=shareamp;utm_medium=web2xamp;context=3

 extendRoutes(routes) {
    routes.forEach((route) => {
        const alias = route.path.length > 1 ? `${route.path}/index.html` : '/index.html'        
        route.alias = alias
    })
},