我刚刚使用Vercel发布了我的nextjs应用程序。
我很喜欢整个过程除了一个小部分:我本来希望能够将我的应用程序置于维护模式,但此选项在Vercel上似乎不可用。
我的问题是:* 以前有没有人做到过,可以在这里分享一些细节?*
我想可以分为两个层次:
- 修改我的应用程序,以便如果检测到环境变量(即
MAINTENANCE_MODE=true
),每个页面都会重定向到维护屏幕。然而,这并不理想,因为在Vercel上添加环境变量需要考虑部署。 - 在Vercel中通过简单的项目切换来启用/禁用维护模式。这将是令人兴奋的。
3条答案
按热度按时间6kkfgxo01#
“维护模式”可以通过
next.config.js
中的环境变量和redirects属性来实现(需要Next.js 9.5.0或更高版本)。这将添加一个匹配传入请求的通配符路由,然后发出临时重定向
/maintenance.html
位置。请注意,您不能对部署(配置或环境变量)进行更改,除非重新部署。
旧答案
如果您没有使用Next.js或使用旧版本的Next.js,则可以通过
vercel.json
中的redirects属性实现“维护模式”。3pmvbmvn2#
我目前使用的另一种解决方案是创建一个单独的维护页面,然后根据环境变量有条件地截取实际组件的呈现。
我通过调整_app.js代码来实现这一点:
请注意,正如前面的答案中提到的,这依赖于Vercel env变量,根据他们的网站:“需要新的部署才能使更改生效。”
juud5qan3#
要添加到**@ptrkcsk**的评论中,如果您正在将维护页面放在
pages
目录中,并且正在使用next/image
中的<Image>
组件渲染图像,您还需要将static
文件夹包含到重定向正则表达式中。这是我使用的源代码模式:
/((?!maintenance)(?!_next)(?!static).*)