如何在Digital Ocean App Platform将www.domain.bio重定向至domain.bio?
解决www.domain.bio到domain.bio的重定向及会话互通问题
1. 清理App Platform的冗余域名配置
- 登录DigitalOcean控制台,进入你的Next.js应用的App Platform面板
- 进入「Domains」页面,删除
*.domain.bio泛域名配置,只保留主域名domain.bio。泛域名会让www被识别为独立站点,直接导致会话Cookie无法互通,这是核心问题。
2. 配置DigitalOcean域名解析记录
- 进入DigitalOcean的「Domains」管理区,找到你的domain.bio域名
- 添加或修改
www记录:- 记录类型选择
CNAME - 主机名填
www - 目标值填写你的App Platform应用分配的默认域名(格式类似
your-app-name.ondigitalocean.app) - TTL保持默认的300秒即可
- 记录类型选择
3. 在App Platform中设置www域名的重定向
- 回到App Platform的「Domains」页面,点击「Add Domain」,输入
www.domain.bio - 完成域名验证后,找到
www.domain.bio的配置选项,开启重定向到主域名功能,选择301永久重定向(利于SEO),目标地址填https://domain.bio
4. 修复Cloudflare的421错误
- 登录Cloudflare控制台,进入你的domain.bio域名管理面板
- 找到
www.domain.bio的DNS记录,确保:- 如果使用Cloudflare代理(橙色云朵),请将SSL/TLS模式设置为Full或Full (strict),避免SSL握手异常
- 若暂时无法解决握手问题,可以先将记录改为「DNS only」(灰色云朵),待App Platform的重定向配置生效后再切换回代理模式
- 可选:在Cloudflare的「Rules」-「Page Rules」中添加一条重定向规则,作为兜底:
- 匹配规则:
www.domain.bio/* - 动作选择「Forward URL」,重定向类型选301,目标URL填
https://domain.bio/$1($1用于保留原路径的参数和内容)
- 匹配规则:
5. Next.js应用层面的补全配置(可选)
- 在
next.config.js中添加内置重定向规则,确保应用级别的兜底:
module.exports = { async redirects() { return [ { source: '/:path*', has: [{ type: 'host', value: 'www.domain.bio' }], destination: 'https://domain.bio/:path*', permanent: true, }, ]; }, };
- 调整Cookie的域设置,让主域名和www域名共享会话:在登录逻辑设置Cookie时,将Domain指定为
.domain.bio(注意开头的点),示例:
// 以API路由中的设置为例 export default function handler(req, res) { // 生成sessionId逻辑 const sessionId = 'your-session-id'; res.setHeader('Set-Cookie', [ `sessionId=${sessionId}; Path=/; Domain=.domain.bio; HttpOnly; Secure; SameSite=Strict`, ]); res.status(200).json({ success: true }); }
内容的提问来源于stack exchange,提问作者Cedric Hadjian
相关产品推荐
相关产品推荐

