子域(域名)可以有下划线_吗?


当前回答

还有一件事你可能需要知道:如果url的主机或子域部分包含下划线,IE9(尚未测试其他版本)不能编写cookie。

所以要小心。: -)

其他回答

不管主机名和域名的讨论如何,在url的主机部分使用下划线肯定是一个非常糟糕的主意。它会给你带来悲伤。它可能在浏览器中很好地工作,但在最近的一个案例中,我遇到了一个应用程序拒绝使用*.s3的完全有效的通配符证书建立tls连接。Amazonaws.com,因为通配符主机名部分有一个下划线,并且不生效。我相信底层库使用了openssl。

个人顶级域名可以在他们认为合适的情况下对域名设置自己的规则和限制,例如适应当地语言。

例如,根据CIRA,加拿大的。ca域名被允许:

字母a ~ z,以及以下重音字符:é ë ê è â à æ ô ù û ü ç î ï。请注意,域名不区分大小写。这意味着大写字母和小写字母之间没有区别(A = A); 数字0123456789和 连字符("-)(虽然不能用于域名的开头或结尾)。

最大长度为63个字符,每个重音字符减少4个字符的限制。

(源)


顺便说一句,这为。ca域提供了大约4个四次方的域名可能性(不包括子域名)。

截至2022年,谷歌搜索中出现了子域名包含下划线的网站。

澄清bortzmeyer和David Tonhofer,域名和子域名标签可以包含前导下划线,但没有其他地方。

如David Tonhofer所述,标签是介于句号之间的部分,除了指定服务标签和端口标签以区别于普通标签外,其他部分都应遵循LDH规则。然后,它们必须出现在标签的开头,标签应该是来自服务名称和端口号注册表的“短名称”,端口号不带前导0,或者协议(即。tcp, udp)。这些服务标签进一步限制为15个字符。

RFC2782指定前缀 带下划线的服务记录子域。 RFC6698指定前缀 TLSA证书记录中带下划线的端口号。

与David Tonhofer的回答相反,IDN不允许编码下划线('_' U+005F LOW LINE)或任何其他无效的ASCII字符。

从RFC5890

(. .]两个新的LDH标签子集由 介绍IDNA。这些被称为保留LDH标签(R-LDH 非保留LDH标签(NR-LDH标签)。保留LDH 标签,在其他一些情况下被称为“带标签的域名”,具有 它们在第三和第四个中包含“——”的属性 其他符合LDH标记规则的字符。

Punycode将所有ASCII码点直接编码为ASCII,包括下划线。生成的R-LDH不符合LDH标签规则。例如,Σ_.com将被编码为xn——_-zmb.com,这违反了规则。可能会有一个单应码点,看起来像一个下划线,可以合法编码(可能是'_' U+FF3F fullwidth low line),但这些类型的码点将被RFC5892在2.3 IgnorableProperties中归类为不允许的非character_code_point。

RACE(另一个提议的IDN编码方案)没有被IETF接受为标准,不应该被使用。

还有一件事你可能需要知道:如果url的主机或子域部分包含下划线,IE9(尚未测试其他版本)不能编写cookie。

所以要小心。: -)