【问题标题】:How to check if a domain name is a CNAME in PHP如何在 PHP 中检查域名是否为 CNAME
【发布时间】:2025-11-28 05:45:01
【问题描述】:

如何检查访问页面的 URL 是原始 URL 还是 CNAME 记录。

例如,我有一个网站domain.com。用户可以设置一个 CNAME,将 www.otherdomain.com 链接到我们的网站 domain.com

从我们服务器的角度来看,我如何检测访问页面的 URL 是实际 URL (domain.com) 还是 CNAME (www.otherdomain.com)?

【问题讨论】:

  • 这种想法需要专用IP吗?

标签: php url dns cname


【解决方案1】:

我认为您必须查询 DNS 才能知道它,因为此信息通常不会出现在请求标头中。

查看 PHP 文档中的 dns_get_recordcheckdnsrr 函数。

【讨论】:

  • dns_get_record 是正确的答案。我让它工作了。谢谢。
【解决方案2】:

您可以使用PHPDNS 类库来找出给定的 url 是什么样的 DNS 记录。

$answer->results[x]->typeid //Textual record type ID (A, MX, CNAME etc)

【讨论】:

    【解决方案3】:

    如果您正在检查 URL,您可以在 PHP 中使用 $_SERVER['HTTP_HOST']。这是从 URL 请求的主机(例如,http://otherdomain.com/blah.php 将使服务器变量为otherdomain.com)。 $_SERVER['SERVER_NAME'] 是 httpd.conf 中配置的服务器名。

    如果 HTTP_HOST != SERVER_NAME,远程用户几乎可以肯定使用某种别名来访问该站点。

    【讨论】:

    • HTTP_HOST 和 HTTP_NAME 都给了我 otherdomain.com