支持
域名重定向

通配符子域重定向:如何重定向所有子域

直接答案

通配符子域重定向会使用一条规则,将某个域名(*.oldbrand.com)的每个子域都重定向到新地址,而不是为每个子域单独设置一次重定向。它需要两层:一条通配符 DNS 记录(主机名为 *),将所有子域指向一台可以执行重定向的服务器;以及该服务器上的一条重定向规则,通常是保留路径的 301 重定向。你可以在 Namecheap、Cloudflare Redirect Rule、你自己的 NGINX 或 Apache 服务器上进行设置,或者在 RedirHub 的 Pro 和 Enterprise 套餐中设置。

当一个域名有很多无法逐个列出的子域时,通配符子域就很有用:例如由用户创建的子域,旧品牌下的 shop.、blog. 和 help. 主机,或者人们仍然会输入的拼写错误。本文将解释什么是通配符重定向,然后展示四种设置方法。关于路径上的模式规则(例如 /old-blog/ 下的所有内容),请参阅我们的路径和服务器的通配符重定向指南。

Diagram of a wildcard subdomain redirect: shop.oldbrand.com/cart, blog.oldbrand.com/post-1 and anything.oldbrand.com reach the redirect server through a wildcard DNS record, and one 301 rule for *.oldbrand.com sends them to mybrand.com with the path kept

什么是通配符重定向?#

通配符重定向是一条匹配某种模式而不是某个单一精确地址的规则。对于子域,这个模式是 *.oldbrand.com:它会匹配 shop.oldbrand.com、blog.oldbrand.com 以及域名前面的任何其他名称,并以 301(永久)或 302(临时)状态将每个请求发送到你选择的目标地址。

单独的一条通配符 DNS 记录不会执行任何重定向。DNS 只决定某个名称由哪台服务器响应;重定向是来自该服务器的 HTTP 响应。这就是为什么下面每种方法都包含 DNS 部分和规则部分。请记住这些规则:

  • 根域是单独的。 通配符记录不包含 oldbrand.com 本身。请将根域作为单独的记录添加并重定向。
  • 已有子域优先生效。 具有自己 DNS 记录的子域(例如 mail 或 www)会由该记录解析,而不是由通配符记录解析。
  • 更深层的名称也可能匹配。 例如在 NGINX 中,*.example.org 也会匹配 www.sub.example.org。
  • HTTPS 需要每个名称都有证书。 如果访问者输入的是 https://,在重定向服务器拥有覆盖该子域的证书之前,浏览器会显示警告。来自 Let's Encrypt 的通配符证书只能通过 DNS-01 验证方式签发。

选项 1:Namecheap 通配符重定向#

当域名使用 Namecheap BasicDNS、PremiumDNS 或 FreeDNS 时,Namecheap 支持通配符 URL 重定向记录:

  1. 登录 Namecheap,打开 域名列表,然后点击该域名旁边的 管理。
  2. 在 重定向域名 部分,点击 添加通配符重定向。
  3. 输入 目标 URL,然后点击 保存更改。
  4. 打开 高级 DNS 选项卡,找到主机为 * 的 URL 重定向记录,并在迁移是永久性的情况下将其类型设置为 永久(301)。Namecheap 的 Unmasked 选项是 302。

Namecheap 说明,新记录通常需要大约 30 分钟才会生效。对于 HTTPS,Namecheap 的指南指出,两个域名之间通过 HTTPS 进行重定向时,两边都需要安装 SSL 证书,所以在完全依赖它之前,请先测试一个 https:// 子域名。我们的 Namecheap 重定向指南 更详细地介绍了 HTTPS 方面的内容。

选项 2:使用通配符模式的 Cloudflare 重定向规则#

如果域名的 DNS 托管在 Cloudflare 上,单个重定向规则可以匹配所有子域名。Cloudflare 只会将该规则应用于其代理的流量,因此子域名需要有一个经过代理的 DNS 记录(例如一个开启代理的 * 记录)。

  1. 在 Cloudflare 仪表板中,打开 规则 > 概览。
  2. 点击 创建规则 并选择 重定向规则。
  3. 在 传入请求匹配 下,选择 通配符模式,并将 请求 URL 设置为 https://*.oldbrand.com/*。
  4. 在 然后 下,将 目标 URL 设置为 https://mybrand.com/${2}(${2} 是第二个星号匹配到的路径),选择状态码 301,并决定是否保留查询字符串。
  5. 点击 部署。

在目标中使用 ${1} 来复用子域本身,例如 https://mybrand.com/team/${1}。我们的 Cloudflare 重定向指南 会逐步讲解单域重定向。

选项 3:在你自己的服务器上使用 NGINX 或 Apache#

将通配符 DNS 记录(*,A 记录)指向你的服务器,安装一个覆盖 *.oldbrand.com 的证书,然后添加一条规则。NGINX:

nginxserver {
    listen 443 ssl;
    server_name *.oldbrand.com;
    ssl_certificate     /etc/ssl/oldbrand-wildcard.pem;
    ssl_certificate_key /etc/ssl/oldbrand-wildcard.key;
    return 301 https://mybrand.com$request_uri;
}

Apache(在虚拟主机上使用 ServerAlias *.oldbrand.com,并启用 mod_rewrite):

apacheRewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.oldbrand\.com$ [NC]
RewriteRule ^ https://mybrand.com%{REQUEST_URI} [R=301,L]

$request_uri 和 %{REQUEST_URI} 会保留路径,因此 shop.oldbrand.com/cart 会跳转到 mybrand.com/cart。如果你不确定,请先用 302 测试,因为浏览器会缓存 301。

你的重定向是否正常工作? 输入你的域名。你将看到状态码(301 或 302)、跳转到哪里、HTTPS 是否有效,以及它从华盛顿、法兰克福和东京响应的速度,并与过去 7 天内测试过的所有重定向进行排名比较。

测试我的重定向

选项 4:使用 RedirHub 的通配符子域重定向#

RedirHub 会为你运行重定向,因此你不需要服务器、通配符证书或代理。通配符子域重定向包含在 Pro 和 Enterprise 套餐中。

  1. 在 RedirHub 控制面板中,创建一个新的 域名重定向。
  2. 在 从 中,输入 *.oldbrand.com。若也要包含根域,请将 oldbrand.com 作为另一个来源添加到同一个重定向中。
  3. 在 重定向到 中,输入 https://mybrand.com。
  4. 在 重定向类型 下,选择 301 · 永久(若是短期更改,则选择 302 · 临时)。
  5. 在 路径 下,选择 保留路径,这样每个旧 URL 都会落到相同的路径,或者选择 全部指向一个 URL。
  6. 点击 创建重定向。
  7. 打开 主机名,选择该主机名,点击 连接 DNS,并在你的 DNS 服务商处添加所示记录(手动),然后点击 我已完成更改。
  8. 使用 重定向速度测试测试几个子域名:你应该会看到 301 以及每个子域名对应的正确目标地址。

RedirHub 会在每个子域名首次被请求时自动为其颁发证书,这就是你在每个已连接域名上获得的 自动 HTTPS。在 Enterprise 版中,单个通配符证书会覆盖 *.oldbrand.com。

将每个子域名发送到它自己的页面#

通配符源通常会与目标变量结合使用,这样一条规则就能把每个子域名发送到不同的位置。{host.sub} 会插入所请求的子域名:

textRedirect from: *.example.com
Redirect to:   https://www.example.com/team/{host.sub}

alice.example.com  →  https://www.example.com/team/alice
bob.example.com    →  https://www.example.com/team/bob

你也可以使用 https://{host.sub}.new-brand.com 并保留路径,把子域名保留在新域名上;这通常是迁移到新品牌的 网站迁移 设置。有关变量的完整列表,请参见 目标 URL 变量。

Namecheap、Cloudflare、你的服务器,还是 RedirHub?#

NamecheapCloudflare自有服务器RedirHub
DNS必须使用 Namecheap DNS必须使用 Cloudflare DNS,已代理指向您服务器的通配符 A 记录DNS 保持在原处不变;只有 Connect DNS 中显示的记录会更改,电子邮件(MX)仍可正常工作
子域名上的 HTTPS需要在双方都安装 SSL由 Cloudflare 为已代理主机名处理您安装并续订通配符证书(DNS-01)为每个子域名自动签发并续订
Paths一个目标带有 ${1}、${2} 的模式重写规则保留路径,或像 {host.sub} 这样的变量
Network未发布Cloudflare 的网络您服务器的位置由 130 个全球边缘位置(PoP)提供服务,靠近每位访问者
重定向类型301, 302, masked永久或临时Any301、302、307、308 和 frame
Clicks未显示不在规则中您的服务器日志已过滤机器人后的点击和独立访客,每个域名的热门链接
Price随域名免费提供规则配额取决于您的 Cloudflare 套餐您的服务器成本和时间Pro 套餐(每月 119 美元,14 天免费试用)和 Enterprise 套餐支持通配符

如果您的域名已经使用 Cloudflare 的代理或 Namecheap DNS,且您只需要一条规则,那么那里的免费选项就足够了。当您在一个地方管理许多域名、希望无需代理即可为每个子域名处理 HTTPS,或者需要让每个子域名跳转到自己的页面时,RedirHub 更适合。通过 批量 CSV 导入,您可以一次性添加其余域名的重定向。

在你打开它之前#

  • 使用 301 进行永久迁移,并直接指向最终 URL,这样就不会形成跳转链。
  • 如果新站点有相同的页面,请保留路径;把所有内容都导向首页会丢失相关性。
  • 也要重定向根域名和 www,因为通配符不包括根域名。
  • 测试真实子域名,包括一个你从未创建过的子域名,并分别通过 http:// 和 https:// 访问。

常见问题

通配符重定向是一条可匹配某种模式的规则,例如 *.oldbrand.com,而不是一个精确地址。所有匹配的子域或 URL 都会被发送到你选择的目标,通常会使用 301 表示永久迁移。

不。通配符记录只匹配域名前面的名称,例如 shop.oldbrand.com,而不包括 oldbrand.com 本身。请为根域单独添加一条记录并重定向;在 RedirHub 中,你可以将其作为同一重定向中的第二个来源添加。

不。通配符 DNS 记录(主机名 *)只决定每个子域由哪台服务器响应。重定向是来自该服务器的 HTTP 响应,因此你还需要在 Namecheap、Cloudflare、你自己的服务器或重定向服务上设置重定向规则。

可以。Cloudflare 可以在目标 URL 中使用 ${1} 重用匹配到的子域,而 RedirHub 可以使用 {host.sub} 变量插入它,例如 https://mybrand.com/team/{host.sub}。

重定向服务器在通过 HTTPS 响应之前,需要有覆盖该子域的证书。请在你自己的服务器上使用通配符证书,使用 Cloudflare 上的代理记录,或使用会自动为每个子域签发证书的重定向服务。

Pro 和 Enterprise。Core 不包含。Pro 提供 14 天免费试用。

相关帮助

查看全部文章