按照vue history官方说明,已经将nginx配置修改成
location / {
try_files $uri $uri/ /index.html;
}
并且,在nuxt项目已设置layout/error.vue,结果是404地址会显示首页内容,非404地址会调转到相应页面。
vue history官方有相应说明
给个警告,因为这么做以后,你的服务器就不再返回 404 错误页面,因为对于所有路径都会返回 index.html 文件。为了避免这种情况,你应该在 Vue 应用里面覆盖所有的路由情况,然后在给出一个 404 页面。
const router = new VueRouter({
mode: 'history',
routes: [
{ path: '*', component: NotFoundComponent }
]
})
我看了nuxt项目的自动渲染的路由
export function createRouter () {
return new Router({
mode: 'history',
base: '/',
linkActiveClass: 'nuxt-link-active',
linkExactActiveClass: 'nuxt-link-exact-active',
scrollBehavior,
routes: [
{
path: "/product/test",
component: _cda7ca6c,
name: "product-test"
},
{
path: "/product/:id?",
component: _fb3a329c,
name: "product-id"
},
{
path: "/",
component: _776d265b,
name: "index"
}
],
fallback: false
})
}
最后并没有通配符设置,所以是导致问题的原因。经测试,手动修改router再发布到nginx上是正常的,但是未免太过于麻烦。所以想请教大家这个问题怎么解决,谢谢了。
自己来回答一下,如果有问题,欢迎大家指出纠正
一、解决nuxt生成静态文件,动态路由会被忽略的问题
在 Nuxt.js 执行 generate 命令时,动态路由会被忽略。
可以在
nuxt.config.js
配置相应参数解决这个问题。配置如下二、解决nuxt生成的静态文件部署到nginx上的问题
1、配置nginx
2、配置nuxt
因为nuxt动态渲染的路由并没有渲染出
"*"
,结果导致404地址会显示首页内容,非404地址会调转到相应页面,所以还需要在nuxt.config.js
中手动配置渲染路由