URL 中第一个斜杠是强制性的吗?

Does first slash is compulsory in URL?

今天我们与同事争论这是否有效 URL http://domain.com?some_param=1。定义 URL 结构的 RFC 没有明确声明这是无效结构。根据 RFC 1738,第 3.3 部分

If neither <path> nor <searchpart> is present, the "/" may also be omitted.

但是,在同一文档第 3.1 部分的末尾,它说

Note that the "/" between the host (or port) and the url-path is  NOT part of the url-path.

检查 curl 发现了一些有趣的事情

$ curl -v -I http://whosebug.com?test
* Rebuilt URL to: http://whosebug.com/?test
...

所以,问题是

这是否有效 URL? http://domain.com?some_param=1

第 3.3 节针对 hostport 遵循第 3.1 节,但其余部分如该节中所定义。因此,如果存在 pathsearchpart,则 port 后的斜杠是必需的。

尽管如此,工具可能会尝试提取有效的 URL,即使省略了这个斜杠,因为各种意识形态的戒律之一是输入自由,输出保守。