Home
img of docs

将深入分析和解决在 Vercel 根目录使用 vercel.json 配置自定义域名重定向时可能出现的异常问题。我们将探讨如何正确配置重定向规则,包括如何处理 HTTP 路径、源域名与目标域名的匹配,并提供调试技巧,帮助开发者避免常见的配置错误。

chou403

/ Vercel

/ c:

/ u:

/ 4 min read


一学一个不吱声

异常:Too many redirects occurred trying to open “https://uchou.me”. This might occur if you open a page that is redirected to open another page which then is redirected to open the original page.

出现 “Too many redirects” 的问题,通常是因为你的重定向规则导致了循环重定向。以下是导致问题的可能原因及解决方法:

问题分析

  1. Vercel 默认域名和自定义域名的重定向循环:

    • 当你在 Vercel 配置了重定向规则,将默认域名(your-site.vercel.app)跳转到自定义域名(uchou.me),同时自定义域名通过 DNS 或其他规则又指回了默认域名,就会导致循环。
  2. HTTPS 重定向设置冲突:

    • 如果 Vercel 和 Cloudflare 同时配置了 HTTPS 强制重定向,可能产生冲突。
  3. Cloudflare 和 Vercel 配置不匹配:

    • Cloudflare 的 DNS 或 Page Rules 与 Vercel 的重定向配置产生冲突。

解决方法

1. 检查并修复重定向规则

在 Vercel 和 Cloudflare 的配置中,确保重定向规则不会互相循环。

Vercel 重定向规则
  1. 确保你只在 自定义域名 的情况下执行重定向:

    • 编辑项目根目录的 vercel.json 文件,添加以下配置:
         {
      	"redirects": [
      		{
      			"source": "/(.*)",
      			"has": [{ "type": "host", "value": "your-site.vercel.app" }],
      			"destination": "https://uchou.me/$1",
      			"statusCode": 301
      		}
      	]
      }
    • 解释:
      • 只有当访问的域名是 your-site.vercel.app 时,才会重定向到 uchou.me
      • 避免自定义域名再次触发同样的规则。
  2. 部署更新:

    • 提交更改并重新部署到 Vercel。

2. 检查 Cloudflare 配置

如果你的自定义域名通过 Cloudflare 管理 DNS,请确认以下设置:

DNS 配置
  • 确保 CNAME 记录正确指向 Vercel:
    • Type: CNAME
    • Name: @(或你的子域,如 www)
    • Value: cname.vercel-dns.com
    • Proxy status: 设置为 Proxied
Page Rules
  1. 确保 Cloudflare 的重定向规则不会冲突:

    • 如果你在 Cloudflare 添加了类似的重定向规则,请禁用或删除。
  2. 清除缓存:

    • 在 Cloudflare Dashboard 中,进入 Caching > Configuration,点击 Purge Everything

3. 检查 HTTPS 设置

Vercel 配置
  1. 确保在 Vercel 中启用了 HTTPS:

    • Settings > Domains 中,确认自定义域名有 Active SSL 标记。
  2. 禁用重复的强制 HTTPS 重定向:

    • 如果 Vercel 自动处理 HTTPS 重定向,不需要在 vercel.json 或代码中手动添加。
Cloudflare 配置
  1. 在 Cloudflare 的 SSL/TLS > Overview 中:
    • 将 SSL 模式设置为 FullFull (Strict)
    • 确保未启用 Always Use HTTPS(如果 Vercel已经启用 HTTPS)。

4. 测试并验证

  1. 清除浏览器缓存和 Cookies。
  2. 通过工具检查重定向链(例如 Redirect Checker)。
  3. 直接访问默认域名(your-site.vercel.app)和自定义域名(uchou.me),验证重定向行为是否正常。

总结

  • 避免循环重定向的关键:
    1. 在 Vercel 中限定默认域名的重定向规则。
    2. 确保 Cloudflare 和 Vercel 的重定向配置互相匹配且无冲突。
    3. 避免重复的 HTTPS 强制规则。