我注意到

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应该不区分大小写,除非有很好的理由说明它们不应该区分大小写。

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

如果我在网站上有两页:

http://stackoverflow.com/ABOUT.html

and

http://stackoverflow.com/about.html

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

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

其他回答

老问题,但我在这里绊了一下,所以为什么不尝试一下呢,因为这个问题寻求的是不同的观点,而不是一个确定的答案。

w3c可能有它的建议-我很关心-但想要重新考虑,因为问题在这里。

为什么w3c认为域名是不区分大小写的,并且在后面留下不区分大小写的内容?

我认为基本原理是URL的域部分是由用户手动输入的。 超文本之后的所有内容都将由机器(浏览器和后面的服务器)解析。

机器可以比人类更好地处理不区分大小写的问题(不是技术上的:))。

但问题是,仅仅因为机器可以处理,就应该这样做吗?

我的意思是命名和访问位于hereIsTheResource和hereIsTheResource的资源的好处是什么?

横向图比驼色图更难读,驼色图更容易读。 人类可读(包括技术类)

以下是我的观点:-

资源路径位于编程结构的中间位置,有时靠近浏览器后面的终端用户。

你的URL(不包括域名)应该不区分大小写,如果你的用户希望触摸它或键入它等等。在开发应用程序时,应该尽量避免让用户键入路径。

你的URL(不包括域名)应该区分大小写,如果你的用户从来不会手动输入它。

结论

Path应该区分大小写。我的观点倾向于区分大小写。

我不喜欢撞旧文章,但因为这是对这个特定问题的第一个回应,我觉得有必要澄清一些事情。

@Bhavin Shah回答说url的域名部分是不区分大小写的,所以

http://google.com 

and

http://GOOGLE.COM 

and

http://GoOgLe.CoM 

都是一样的,但域名部分之后的所有内容都是区分大小写的。

所以…

http://GOOGLE.COM/ABOUT

and

http://GOOGLE.COM/about

是不同的。

注意:我说的是“技术上”,而不是“字面上”在很多情况下,大多数情况下,服务器的设置处理这些项目相同,但也有可能设置他们,所以他们不处理相同。

不同的服务器处理方式不同,在某些情况下,它们必须区分大小写。在许多情况下,查询字符串值是被编码的(例如Session id或Base64编码的数据,作为查询字符串值传递)这些项本质上是区分大小写的,因此服务器在处理它们时必须区分大小写。

因此,要回答这个问题,服务器在获取这些数据时“应该”区分大小写吗?答案是“是的,绝对是”。

当然,并不是所有的内容都需要区分大小写,但是服务器应该知道区分大小写的含义以及如何处理这些大小写。


@Hart Simha的评论基本上说了同样的事情。在我发布之前我错过了它,所以我想在应得的地方给予赞扬。

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

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

如果我在网站上有两页:

http://stackoverflow.com/ABOUT.html

and

http://stackoverflow.com/about.html

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

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

有了官方的指导方针,有一个有趣的情况,人们应该考虑使用大写的整个url: QR码。

例如,https://example.com/不适合版本1 (21x21)的QR码,需要更大的版本2 (25x25)的QR码。

而使用字母数字模式允许将HTTPS://EXAMPLE.COM/12345塞进更小的版本1!

RFC 3986第6.2.2.1节说:“scheme和host不区分大小写,因此应该规范化为小写。例如,URI HTTP://www.EXAMPLE.com/等价于http://www.example.com/。假定其他通用语法组件是区分大小写的,除非该方案另有特别定义”。

服务器可以在内部规范化传递的URI,并为不同大小写的URI (/about/和/about/)提供相同的资源,使URI对用户来说不区分大小写。