跳到主要内容

域名规范化指南:把 Example.COM 和 example.com 当成同一个域名归一

讲清楚域名归一为什么重要:批量统一大小写、去掉 www、删掉末尾点、处理 Punycode,让白名单和黑名单在比对前先收敛到同一个规范值,全程本地处理不上传。

发布于 作者 李雷
#域名规范化 #域名归一 #白名单整理 #本地工具

域名规范化指南:把同一个域名收敛成同一种写法

我维护过一份允许访问的合作方域名白名单。某天报警说有个合作方一直被拦,排查到最后发现:对方提交的是 Partner.COM,而白名单里存的是 partner.com。两个字符串不相等,比对就判定它们是两个域名。问题不在逻辑,在于数据没有先归一。

域名规范化(归一)要解决的就是这件事:在比对、去重、入库之前,先把所有写法不同但指向相同的域名,统一成同一个规范值。

为什么 Example.COM 和 example.com 是同一个域名

域名的大小写在解析时是不敏感的。Example.COMEXAMPLE.comexample.com 在 DNS 层面指向完全相同的目标。也就是说,它们是同一个域名,只是被写成了不同的样子。

但你的代码不一定知道这件事。字符串比较 "Example.COM" === "example.com" 返回 false,数据库里 WHERE domain = 'example.com' 也匹配不到大写写法的那条。人眼觉得理所当然相等的东西,程序按字节比就是两回事。归一的意义,就是把"人眼认为相等"翻译成"字节上也相等"。

域名规范化要统一哪几件事

实践里反复出现的不一致主要有这几类:

  1. 大小写:全部转成小写。Example.COM 变成 example.com
  2. 末尾点:DNS 里 example.com. 是合法的完全限定域名,末尾那个点表示根域,但在白名单和日志里它和 example.com 是同一个东西,要去掉。
  3. www 前缀:很多场景下 www.example.comexample.com 该被当成同一个站点归一处理,去掉 www 让它们对齐。
  4. Punycode:国际化域名(IDN)有两种写法,例子.com 和它的 ASCII 编码 xn--fsqu00a.com 指向同一个域名,要折叠到统一形式才能比对。
  5. 首尾空白:从网页或工单里复制来的域名常带隐藏空白,不去掉就会变成"看着一样、比起来不一样"的脏数据。

一个真实的归一例子

把下面这段混乱的列表粘进去:

Example.COM
www.example.com
example.com.
  EXAMPLE.com

规范化之后,四行收敛成同一个值:

example.com

四种写法本来指向同一个域名,归一把它们统一成 example.com 这一个规范形式。接下来无论是去重、比对还是入库,它们都会被正确地当成同一条。这一步看着简单,却是后面所有比对逻辑能成立的前提。

白名单和黑名单:比对前必须先归一

允许名单和拦截名单是域名归一最该用上的地方。这两类列表的判断只有"命中"和"未命中"两种结果,一旦写法没对齐,结果就直接错。

正确的做法是:把名单里的每一条都先跑一遍规范化,把待检查的域名也跑一遍同样的规范化,然后再比对。两边都收敛到同一个规范值,Partner.COM 提交进来会先被归一成 partner.com,再去和同样归一过的白名单匹配,就不会因为大小写漏判了。

我自己后来把那份合作方白名单整体过了一遍归一,大小写、末尾点、www 全部统一,误拦再没出现过。关键不是规则多复杂,而是名单和输入用的是同一套归一规则。

为什么坚持在本地处理

域名列表里常常夹着内部主机名、客户域名、还没公开的合作方信息。这些数据没有理由为了"清洗一下格式"就发到外部服务器。规范化是纯文本变换,转小写、去点、折叠 Punycode,这些运算在浏览器里就能跑完,不需要联网。

域名规范化工具 的解析、校验、去重和导出全部在当前标签页完成,粘贴的文本和上传的本地文件都不会发到 Toolora 服务器,处理完直接导出 CSV、JSON 或逐行列表交接。如果你的列表里有大量重复项,想先把重复的折叠掉再归一,可以配合 域名去重工具 一起用。

小结

域名规范化不是花哨功能,是数据比对能成立的地基。记住三条:大小写一律转小写、末尾点和 www 按需去掉、Punycode 折叠到统一形式;名单和输入用同一套规则归一;敏感域名留在本地处理。把这几步做在比对之前,Example.COMexample.com 才会被正确地当成同一个域名。


Made by Toolora · Updated 2026-06-13