vercel.json中redirects与rewrites的区别

在 Vercel 中,redirectsrewrites 都是用于处理 URL 请求的功能,它们提供了对请求的不同操作方式。虽然它们的工作原理相似,但它们有不同的行为和用途。下面是它们的区别:

1. Redirects

  • 功能redirects 用于将用户的请求从一个 URL 重定向到另一个 URL。这意味着浏览器会收到一个 HTTP 响应(通常是 3xx 状态码),并且会告诉浏览器去访问新的 URL 地址。
  • 行为:当一个请求被重定向时,浏览器会发起一个新的请求到目标 URL。这会改变用户的地址栏中的 URL。
  • 使用场景:适用于永久或临时的 URL 重定向,例如网站迁移、页面更名或短链接的创建。
示例:
{
  "redirects": [
    {
      "source": "/old-page",
      "destination": "/new-page",
      "permanent": true
    }
  ]
}
  • source:原始的请求 URL。
  • destination:目标 URL(浏览器会被引导到这个 URL)。
  • permanent:如果为 true,则表示 301 重定向(永久重定向),如果为 false,则表示 302 重定向(临时重定向)。

2. Rewrites

  • 功能rewrites 用于将请求的 URL 映射到另一个 URL,但不会改变浏览器地址栏中的 URL。也就是说,服务器会从另一个 URL 返回内容,但用户看到的 URL 仍然是原始的 URL。
  • 行为:重写是透明的,浏览器地址栏中的 URL 不会发生变化。服务器内部将处理请求并返回目标 URL 的内容。
  • 使用场景:适用于将请求代理到不同的路径或提供动态内容,而无需改变 URL,例如静态页面的代理或在服务器端处理请求时的 URL 变化。
示例:
{
  "rewrites": [
    {
      "source": "/old-page",
      "destination": "/new-page"
    }
  ]
}
  • source:原始的请求 URL。
  • destination:目标 URL(服务器将返回此 URL 的内容,但浏览器地址栏保持不变)。

主要区别:

特性 redirects rewrites
URL 更改 浏览器地址栏中的 URL 会改变。 浏览器地址栏中的 URL 不会改变。
HTTP 响应 返回 3xx 响应,导致浏览器发起新请求。 返回 200 响应,目标 URL 的内容被返回。
使用场景 用于永久或临时的 URL 重定向。 用于内部 URL 路由或内容代理,不改变 URL。
状态码 支持 301 (永久) 和 302 (临时) 状态码。 始终返回 200 状态码。

总结:

  • redirects:用于将请求重定向到新的 URL,且会改变浏览器地址栏中的 URL。
  • rewrites:用于内部处理 URL 请求,浏览器地址栏中的 URL 不会变化,但服务器会返回另一个 URL 的内容。

选择使用 redirects 还是 rewrites,取决于你是否需要让浏览器的地址栏发生变化。

你可能感兴趣的:(json,vercel)