我正在做以下事情:

有效的URL:

https://ip:port/entryPath/dashboard/user

不起作用的URL:

https://ip:port/entryPath/dashboard/user/123
https://ip:port/entryPath/dashboard/user/123/settings
https://ip:port/entryPath/dashboard/user/123/privacy

我希望能够共享一个URL,例如:

https://ip:port/entryPath/dashboard/user/123/activity

所以其他用户只要点击URL就可以直接访问它.但不管我在哪里部署,它最终都是404.

Please Note:

推荐答案

当你的应用程序以单页应用程序(SPA)的形式运行时,一切都发生在原来的输入页面中——当你在路由之间导航时,你实际上并没有加载新页面.只要不刷新页面,这些路由是否与服务器上的实际html文件对应并不重要,因为SPA知道该怎么做.但是,如果重新加载页面或从动态路径输入,如果该URL处没有html文件,静态服务器将提供404服务,因为它不知道还能做什么.

您可能已经理解了所有这些,因为您正在运行generate来构建静态页面.但是Nuxt的generate命令只知道为pages目录中的*.vue个文件生成页面.Dynamic routes are ignored.判断你上传的dist文件夹——每个工作URL都应该有一个对应的路径(对应于你的pages目录),但你找不到动态路由的文件.

要解决这个问题,需要为generate命令提供一组动态路由.您可以通过将something like this添加到nuxt.config.js:

  generate: {
    // create an array of all routes for generating static pages
    // careful, this is only used by `npm run generate`. These must match SPA mode routes
    routes: function () {
      return axios.get(
        'https://jsonplaceholder.typicode.com/users'
      )
      .then((response) => {
          let users = response.data.map((user) => {
              return {
                route: '/users/' + user.id,
                payload: user
              }
          });
          return ['/some-other-dynamic-route-or-array-of-routes/', ...users]
       });
     }
   }

Here's a nice article about static sites with Nuxt with examples

如果你在dist目录中看到页面,你就会知道页面是按预期生成的.

编辑:你也可以使用hash mode.所以你的URL不是https://ip:port/entryPath/dashboard/user/123而是https://ip:port/entryPath#dashboard/user/123.在这种情况下,服务器总是请求根SPA索引.html,它将使用路由来确定要做什么(因此当您导航到该路由时,它应该像现在一样执行).如果你这样做,你只需要使用SPA模式,根本不需要生成任何页面.这对搜索引擎优化不好,但你可以立即使用可共享的URL.

Vue.js相关问答推荐

Vuetify/Vue3 插槽模板之间的阴影

使用项目和字段,列跨度为 2 的 Bootstrap-vue 表

Vue CLI: 如何在一个vtextfield更改时让另一个vtextfield的值也同时更改,但同时又可以覆盖它?

vue : 多个样式的类绑定在一个

Vuetify 复选框未正确显示值

如何在 VUE.js 中重新刷新时保持多层 b-collapse 菜单打开?

如果在 VueJS/VuetifyJS 中切换switch,则调用函数

CssSyntaxError 使用 Webpack 4 构建未知单词

在组件之间共享 websocket 连接

VueJS CKeditor5 上传图片

使用 VueJS 在 v-for 中转换

全局禁用 vuetify 组件的涟漪效应

如何在 Vue.js 3 中使用 Vue 3 Meta?

Proxy代理在 Vue 3 的控制台中是什么意思?

Import Unexpected identifier + SyntaxError: Unexpected string

如何从 keep-alive 中销毁缓存的 Vue 组件?

使密码字符隐藏在 Vuetify 字段中

vue 未在实例上定义,但在渲染期间引用

在 Vuejs 中全局导入 Axios 方法

如何隔离 Vuetify 全局样式