如何使用 spa-prerender 插件在 VUE 中预渲染“*”(未找到)页面

Posted

技术标签:

【中文标题】如何使用 spa-prerender 插件在 VUE 中预渲染“*”(未找到)页面【英文标题】:How to prerender a "*" (not-found) page in VUE using spa-prerender plugin 【发布时间】:2019-01-26 13:19:55 【问题描述】:

我在 Vue.js 中使用 spa-prerender-plugin,一切正常。

但是,我也想预渲染我的 404 页面,在 Vue 中是这样的:

 
    path: '*', 
    name: 'FourOhFour', 
    component: FourOhFour 

使用插件,我想像这样添加 404:

routes: ['/', '/contact', '*'],

但是在尝试这个时,我得到:

[prerender-spa-plugin] 中的错误无法预渲染所有路由!

谢谢。

【问题讨论】:

【参考方案1】:

我找到了另一个无需编辑 .htaccess 文件的简单解决方案。 只需插入用于预渲染到您的路由器的语句:


      path: '/404',
      name: 'FourOhFour',
      component: FourOhFour
  ,
  
      path: '*',
      name: 'FourOhFourX',
      component: FourOhFour
  

并预渲染静态路由:

routes: ['/', '/contact', '/404'],

【讨论】:

【参考方案2】:

根据https://github.com/chrisvfritz/prerender-spa-plugin/issues/237,这是不可能的。

你可以编辑你的路由器代码

path: '/404', 
name: 'FourOhFour', 
component: FourOhFour

并通过替换此行将未解决的路由重定向到 .htaccess 中的 404 页面

RewriteRule    (.*) index.html [L]

RewriteRule    (.*) 404/index.html [L]

【讨论】:

嗨@bazilisok。是的,我在他的 GitHub 存储库上打开了这个问题,他的回复让我采取了另一条路线。显然,我仍然需要 url 来携带预期的 url,同时显示 404 页面。不要完全重定向到另一个/404 页面。我目前使用 Node.js 通配符作为临时修复来显示 404 页面并仍然保留预期的 URL。 (缺点是它先重定向到主页,但它有效)。 我明白,但在我的示例中,浏览器会保留预期的 URL,并且仅根据您的要求显示 404 页面内容。至少在我目前正在进行的项目中。 你的也应该可以工作 :) 虽然我无法测试它,因为我的应用程序在 Heroku 上,并且 node.js 是一种更安全的方式。但我很快就会这样做,并在测试时给你 +1。

以上是关于如何使用 spa-prerender 插件在 VUE 中预渲染“*”(未找到)页面的主要内容,如果未能解决你的问题,请参考以下文章

什么是vue插件,vue插件怎么使用?

在 iOS 中使用 Core Graphics 绘制 VU 表

Vue使用v-viewer插件实现图片放大缩小的功能

如何为 vue 插件添加类型?

如何使用 Vue-TCB 快速在 Vue 应用中接入云开发

k6:增加VU数量的每个阶段如何管理rps-limit