摘要生成中...
AI 摘要
Hunyuan-lite

文章包含以下重定向需求的解决:

名称 原地址 重定向后地址 原因
去掉 index.html https://a.com/xxx/index.html https://a.com/xxx/ 统一路径、维持数据统一性
补齐末尾斜杠 / https://a.com/xxx

至于 HTTP 强转 HTTPS、WWW 重定向到根域名的配置,详见:站内文章从 HTTP 重定向到 HTTPS、从 WWW 重定向到根

链接重写与链接重定向的区别

链接重写 Rewrite

相似概念:Rewrite URL(Cloudflare)、重写回源 URL(阿里云 CDN)、回源 URL 重写(腾讯云 CDN)、隐性 URL 转发(阿里云云解析)

简单来说,链接重写就是用户在请求 https://a.com/p/a.txt 资源时,当请求经过某个中间机构时,中间机构将请求替换为另一个链接,如 https://b.top/img/a.txt,并将新链接下的资源返回给用户。但是用户对所有这些替换操作均不知情,用户浏览器中的地址不会改变。

image.png

比如阿里云 CDN、腾讯云 CDN 均提供了「重写回源 URL」的功能:

image.png

链接重写常用于隐藏源站的真实 URL 结构,保护源站信息;或者通过 URL 映射,让 CDN 节点回源到不同的源站目录。

链接重定向 Redirect

相似概念:Redirects(Cloudflare)、重写访问 URL(阿里云 CDN)、访问 URL 重写(腾讯云 CDN)、访问重定向(多吉云 CDN)、显性 URL 转发(阿里云云解析)

而链接重定向是指用户在请求 https://a.com/p/a.txt 资源时,中间服务结点告诉用户这个资源已经移到了 https://b.top/img/a.txt,用户的浏览器接收到这个请求后又发了一次 https://b.top/img/a.txt 请求。用户浏览器中的链接发生了变更。

比如阿里云 CDN 提供了「重写访问 URL」的功能:

image.png

重定向常用于将旧域名的 URL 迁移、映射到新域名;或者为移动端和 PC 端提供不同的 URL。

重定向 HTTP 返回代码一般为 3XX。301 为永久重定向;302、303、307 为临时重定向。临时重定向和永久重定向的区别可以看 站内文章这篇文章

链接重定向的时机

DNS 解析链接地址的大致流程如下:

img

如果我们把上面 DNS 递归解析、迭代解析的过程拉平,并取出其中的主要结点,那么可以得到下图:

我们可以通过以下三种结点进行链接重定向。

在 NS 端重定向:

  • 阿里云/腾讯云云解析。添加一条「显性 URL 转发」的记录。但由于博主没能通过这种方式成功实现自己的目的。
  • Cloudflare 重定向规则。本文后半部分将讲述这个操作步骤。

在其他 DNS 服务中重定向:

在服务器上使用反向代理进行重定向:

  • Nginx。通过写一堆规则可实现部分重定向功能。详看 站内文章这篇文章。对于一些复杂路径上的重定向,博主还没能实现成功。(所以本篇文章就介绍其他方法实现复杂的路径重定向)

Cloudflare 中配置重定向规则

现重定向的需求如下:

名称 原地址 重定向后地址
去掉 index.html https://a.com/xxx/index.html https://a.com/xxx/
补齐末尾斜杠 https://a.com/xxx

这两点是困扰我许久的问题。因为博客里的文章链接路径都是统一的 /p/xxxxxx/ 但是搜索引擎在展示搜索结果时,文章链接总是带上 index.html 或少一个 /。虽然页面是正常的,但是:

以前在 Nginx 上折腾不出结果,搞得都是循环重定向。现在 Cloudflare 的「重定向规则」功能可以很方便的达到我们的要求。

Cloudflare 规则

Cloudflare 中可以自己定一个重定向规则:

image.png

旧版 UI

image.png

使用通配符模式即可:

image.png

但目前来看原地址后的 Hash Tag 以及参数在重定向过程中会被省去。我们可以通过 HTTP状态检测工具- dute.org 检测重定向路径是否符合预期:

image.png

第二个重定向规则如下:

image.png

规则概览:

image.png

腾讯云 CDN

腾讯云 CDN 中有类似 URL 重写规则的配置「CDN 控制台」->「域名管理」->「缓存控制」,此重定向为 302 重定向。

image.png

腾讯云 EdgeOne

腾讯云 EdgeOne 中也有相应规则配置,支持自选 3XX 状态码:

image.png

规则编写方法类似 Cloudflare,但它用正则更加易写:

image.png

后记

搞网络配置时最恼人的两个东西:延迟与缓存。每一步操作都要等待一定时间后才能进行验证,因为在配置生效期间的测试结果会反复横跳(「冒险」时间长)。对于调试时期来说,缓存就如同雾气一样,拉远表象与实质之间的距离。但是如果你找到好的工具(各种在线站长工具)以及方法论(学会清缓存),整个过程就会顺畅多了。

另一个令人抓狂的点是 Cloudflare 调整重定向时,如果语法不正确它会把你之前填的内容全部清空!

最后,写完这篇文章以及与各位博主交流,我也巩固了一些网络知识,加深对课本概念的理解。

后续任务:

  • 解决带 HashTag 及参数的链接重定向问题。https://blog.uuanqin.top/p/1f2b3c/index.html#123?k=v-> https://blog.uuanqin.top/p/1f2b3c/#123?k=v
    • 如果只包含查询字符串就可通过打勾相关选项解决(241028 解决)
    • # 后边的部分仍然会舍掉。这是个普遍的问题 Cloudflare 和腾讯云 CDN 都弄不了
  • 解决少一个 / 的重定向:https://blog.uuanqin.top/p/1f2b3c->https://blog.uuanqin.top/p/1f2b3c/241026 解决)

本文参考