Nuxt 2中路径含点号时如何重定向至自定义错误页面?
解决Nuxt静态模式下带点号路径不显示自定义错误页的问题
这个问题的核心原因是:当target: 'static'时,部署后的静态服务器会把带点号的路径(比如/for.m)识别为静态文件请求,直接返回服务器默认404,不会把请求转发给Nuxt的路由系统,自然也就不会触发error.vue。而target: 'server'是服务端渲染模式,所有请求都会经过Nuxt处理,所以不会有这个问题。
解决方案:配置服务器的SPA fallback规则
你需要让服务器把所有路由请求(包括带点号的)都转发到Nuxt生成的index.html,这样Nuxt的路由系统就能接管请求,进而触发自定义的error.vue。
以下是常见服务器的配置示例:
- Nginx:在站点配置中添加
try_files规则
location / { try_files $uri $uri/ /index.html; }
- Netlify:在项目根目录创建
_redirects文件,添加内容:
/* /index.html 200
- Vercel:在
vercel.json中配置:
{ "rewrites": [ { "source": "/(.*)", "destination": "/index.html" } ] }
- 本地开发/测试(用
serve工具):启动时加上--single参数,强制所有请求回退到index.html:
serve dist --single
关于/_nuxt/路径的默认404
/_nuxt/是Nuxt静态生成的资源目录,本身就不允许直接访问,出现浏览器默认404是正常的,不需要额外处理——用户正常访问不会进入这个路径,除非手动输入,这种场景下默认404是合理的。
内容的提问来源于stack exchange,提问作者sas_bah
相关产品推荐
相关产品推荐

