我注意到

HTTP://STACKOVERFLOW.COM/QUESTIONS/ASK

and

http://stackoverflow.com/questions/ask

两者都可以工作-实际上前一个转换为小写字母。

我认为这对用户来说是有意义的。

如果我看谷歌,那么这个URL工作正常:

http://www.google.com/intl/en/about/corporate/index.html  

但是这个带ABOUT的不能用:

http://www.google.com/intl/en/ABOUT/corporate/index.html   

URL是否应该区分大小写?


当前回答

URL的域名部分不区分大小写,因为DNS忽略大小写: http://en.example.org/和HTTP://EN.EXAMPLE。ORG/两者都打开同一页。

路径用于指定或查找所请求的资源。它是区分大小写的,尽管它可能被某些服务器视为不区分大小写,特别是那些基于Microsoft Windows的服务器。

如果服务器区分大小写,并且http://en.example.org/wiki/URL是正确的,那么http://en.example.org/WIKI/URL或http://en.example.org/wiki/url将显示一个HTTP 404错误页面,除非这些url指向有效资源本身。

其他回答

为了可读性,所有“不敏感”都加粗。

根据RFC 4343,域名不区分大小写。URL的其余部分通过GET方法发送到服务器。这可能区分大小写。

以这个页面为例,stackoverflow.com接收GET字符串/questions/7996919/should-url-be-大小写敏感,向浏览器发送HTML文档。Stackoverflow.com是大小写不敏感的,因为它为/QUEStions/7996919/ should -url-be大小写敏感生成了相同的结果。

另一方面,维基百科是区分大小写的,除了标题的第一个字符。url https://en.wikipedia.org/wiki/Case_sensitivity和https://en.wikipedia.org/wiki/case_sensitivity指向同一篇文章,但https://en.wikipedia.org/wiki/CASE_SENSITIVITY返回404。

考虑以下几点:

https://www.example.com/createuser.php?name=Paul%20McCartney

在这个假设的示例中,HTML表单(使用GET方法)将“name”参数发送给创建新用户帐户的PHP脚本。

我在这个例子中要强调的一点是,这个GET参数需要区分大小写,以保留“McCartney”的大写字母(或者,作为另一个例子,保留“Walter d’isney”,因为还有其他方法可以打破通常的大写字母规则)。

正是这样的情况指导了W3C的建议,即方案和主机不区分大小写,但之后的所有内容都可能区分大小写——这取决于服务器。通过标准强制不区分大小写将使上面的示例无法保留作为GET查询参数传递的用户输入的大小写。

但我想说的是,尽管这是法律条文中对此类案件的规定,但法律的精神是,在与案件无关的情况下,不区分案件。然而,这些标准并不能告诉你什么情况下大小写无关紧要,因为,就像我给出的例子一样,这是一个与上下文相关的东西。

(例如,帐户用户名最好不区分大小写,因为“User123”和“User123”是不同的帐户,可能会令人混淆,即使他们的真实姓名,如上所示,最好是左区分大小写。)

有时是相关的,大多数时候不是。但这必须由服务器/ web开发人员来决定这些事情——不能由标准规定——因为只有在这个级别上才能知道上下文。

方案和主机是不区分大小写的(这显示了标准对不区分大小写的偏好,在这里它可以被普遍规定)。其余的由您自己决定,因为您更好地理解了上下文。但是,正如已经讨论过的,根据法律的精神,您可能应该默认不区分大小写,除非您有很好的理由不这样做。

根据W3的“HTML和url”,它们应该:

可能有url,或者url的一部分,大小写不重要,但是 识别这些可能并不容易。用户应该始终考虑到这一点 url区分大小写。

请看这里的规格: 2.7.3节 https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p1-messaging-25#page-19

scheme和host不区分大小写,通常以小写形式提供;所有其他组件以区分大小写的方式进行比较 的方式。

url应该不区分大小写,除非有很好的理由说明它们不应该区分大小写。

这不是强制性的(它不是RFC的任何一部分),但它使url的通信和存储更加可靠。

如果我在网站上有两页:

http://stackoverflow.com/ABOUT.html

and

http://stackoverflow.com/about.html

它们有何不同?也许有人写的是“大喊风格”(大写)——但从IA的角度来看,这种区别永远不应该通过URL的变化来区分。

此外,在Apache中很容易实现这一点-只需从mod_spelling使用CheckSpelling On。