域名DNS解析中DNS隐/显性 URL记录

场景

大部分人都拿过这个需求:站点同时有顶级域名(example.com)和 www 二级(www.example.com),为了不让搜索引擎把这俩当成两个站、分散权重,需要把其中一个 301 跳到另一个。

常规做法是在 Web 服务器(Nginx / Apache / IIS)里写一条 301 规则。但很多 DNS 服务商提供的"URL 转发"记录可以不走服务器层,直接在 DNS 解析时就完成跳转。配置极简单,不用动 Web 服务器配置,适合临时需求或者管不到服务器配置的场景。

本文整理这几个东西:URL 转发是什么、隐性和显性区别、什么情况用、不能用的坑。

域名DNS解析中DNS隐/显性 URL记录

什么是 URL 记录

常规的 DNS 记录类型(A、CNAME、AAAA、TXT 等)是把域名指向一个 IP / 别名,然后浏览器自己去那个 IP 发 HTTP 请求。URL 记录不一样,它直接告诉 DNS 服务商:"这个域名访问时给我跳到另一个 URL"。

具体怎么实现:DNS 服务商在自己机房架了一组转发服务器,当 URL 记录解析时,会把请求路由到这些服务器上,服务器代为完成跳转或转发。所以这其实是个服务商提供的代理层,不是纯 DNS 协议的能力。

支持 URL 记录的主要 DNS 服务商:

  • DNSPod(腾讯云)
  • 阿里云 DNS
  • Cloudflare(用 Page Rules 实现)
  • 华为云 DNS
  • 大部分注册商自带的 DNS(NameSilo、Namecheap、GoDaddy 等)

显性转发(301 重定向)

用户访问 http://biekanle.com → DNS 转发服务器返回 301 Moved Permanently + Location: https://blog.biekanle.com/ → 浏览器跳转,地址栏变成 https://blog.biekanle.com/

特点:

  • 用户看到的地址变了(地址栏显示 blog.biekanle.com)
  • 搜索引擎认这是个真正的跳转,会把权重过户到目标域名
  • 对 SEO 友好

等价于 Nginx 里:

server {
    listen 80;
    server_name biekanle.com;
    return 301 https://blog.biekanle.com$request_uri;
}

隐性转发(iframe 嵌套)

用户访问 http://biekanle.com → DNS 转发服务器返回一个简单 HTML,内含 <iframe src="https://blog.biekanle.com/" /> → 浏览器渲染这个 iframe,看起来内容是目标站,但地址栏一直显示原域名

特点:

  • 地址栏不变(伪装成你的二级域名)
  • SEO 不友好 —— 搜索引擎看到的是 iframe,内容不被算作原域名
  • 用户难以分享真实内容链接(分享出去都是原域名)
  • 很多目标站会用 X-Frame-Options: DENY 拒绝被 iframe,这种情况下隐性转发直接失败白屏

怎么选

场景 推荐方式 原因
主域名 → 子域名(SEO 合并权重) 显性转发(301) 保持 SEO 权重传递
把多个老域名集中到新主域 显性转发 告诉搜索引擎域名搬家
短域名 → 长域名,但不想露 隐性转发 地址栏保持原貌
个人短链服务 显性转发 让用户看到真实落地页

限制和坑(必须知道)

1. 目标地址 X-Frame-Options 限制

隐性转发用 iframe 实现。如果目标站点(blog.biekanle.com)的响应头里设了 X-Frame-Options: DENYSAMEORIGIN,浏览器会拒绝渲染 iframe,转发后页面就是空白或者 "refused to connect"。

常见拒绝被 iframe 的站:Google、百度、淘宝、所有银行站、绝大多数 SaaS 后台。要嵌的话,只能改对方响应头(自己的站才能改),或者用显性转发。

2. 目标不能是 IP 或 IP:端口

URL 转发记录的目标只能是域名,不支持:

  • http://1.2.3.4
  • http://1.2.3.4:8080
  • http://example.com:8080 ❌(部分服务商支持,部分不支持)

要走 IP 或非标准端口,自己架 Nginx 做反向代理。

3. TLS,在 HTTP 之上加一层 TLS 加密,防止中间人窃听和篡改。">HTTPS 限制

转发地址(biekanle.com)通常只支持 HTTP,不支持 HTTPS。原因是 DNS 服务商的转发服务器不会持有你的域名 SSL 证书。如果用户访问 https://biekanle.com,浏览器会先做 TLS 握手,握不上手就直接报错,根本走不到转发逻辑。

转发地址(blog.biekanle.com)支持 HTTP 和 HTTPS 都行。

如果转发前也要 HTTPS,通常解决方法:

  • 用 Cloudflare 接管 DNS,Cloudflare 给你颁发免费 SSL,在 Page Rules 里设转发(支持 HTTPS)
  • 自己架 Nginx,装证书,服务器层做 301

4. 工信部备案要求

大陆服务商(腾讯、阿里、华为云)添加 URL 转发记录时,转发的域名必须已经在工信部备案过(随便哪个接入商都行)。否则 URL 转发设置不进去。

实操示例:DNSPod 添加 URL 记录

  1. 登录 DNSPod 后台 → 找到你的域名 → 解析
  2. 点"添加记录" → 主机记录填 @(顶级) 或 www
  3. 记录类型选 "显性 URL" 或 "隐性 URL"(看上面表格)
  4. 记录值填完整目标 URL,比如 https://blog.biekanle.com
  5. TTL 默认 600 秒就行
  6. 保存

等 5-10 分钟 DNS 缓存刷新,新规则生效。验证用 curl -I http://biekanle.com 看响应头,如果是 301 + Location: https://blog.biekanle.com 就是显性转发成功。

替代方案:Nginx 自己做

如果你能控制服务器,自己写 Nginx 比 DNS URL 记录灵活得多:

# /etc/nginx/conf.d/redirect.conf
server {
    listen 80;
    listen 443 ssl http2;
    server_name biekanle.com www.biekanle.com;
    ssl_certificate     /etc/letsencrypt/live/biekanle.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/biekanle.com/privkey.pem;

    # 全部 301 到 blog 子域名,保留路径和查询串
    return 301 https://blog.biekanle.com$request_uri;
}

这套方案 HTTP / HTTPS 都支持,可以保留路径(biekanle.com/foo 跳到 blog.biekanle.com/foo),还能自定义跳转规则(按 UA、按 IP、按 Cookie 区分),DNS URL 记录这些都做不到。

一句话总结

SEO 场景闭眼选显性转发(301),无论 DNS URL 记录还是 Nginx 都行。隐性转发只在极少数"想隐藏目标 URL"的场景才用,且要注意目标站允不允许被 iframe。

—— 别看了 · 2026
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理 邮箱1846861578@qq.com。
技术教程

vue3+typescript+pnpm详细介绍使用

2023-7-11 19:04:12

技术教程

前端项目使用await-to-js异步代码优化利器

2023-9-26 16:04:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索