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 的内容,但浏览器地址栏保持不变)。

主要区别:

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

总结:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rock——you

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值