我注意到
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是否应该区分大小写?
考虑以下几点:
https://www.example.com/createuser.php?name=Paul%20McCartney
在这个假设的示例中,HTML表单(使用GET方法)将“name”参数发送给创建新用户帐户的PHP脚本。
我在这个例子中要强调的一点是,这个GET参数需要区分大小写,以保留“McCartney”的大写字母(或者,作为另一个例子,保留“Walter d’isney”,因为还有其他方法可以打破通常的大写字母规则)。
正是这样的情况指导了W3C的建议,即方案和主机不区分大小写,但之后的所有内容都可能区分大小写——这取决于服务器。通过标准强制不区分大小写将使上面的示例无法保留作为GET查询参数传递的用户输入的大小写。
但我想说的是,尽管这是法律条文中对此类案件的规定,但法律的精神是,在与案件无关的情况下,不区分案件。然而,这些标准并不能告诉你什么情况下大小写无关紧要,因为,就像我给出的例子一样,这是一个与上下文相关的东西。
(例如,帐户用户名最好不区分大小写,因为“User123”和“User123”是不同的帐户,可能会令人混淆,即使他们的真实姓名,如上所示,最好是左区分大小写。)
有时是相关的,大多数时候不是。但这必须由服务器/ web开发人员来决定这些事情——不能由标准规定——因为只有在这个级别上才能知道上下文。
方案和主机是不区分大小写的(这显示了标准对不区分大小写的偏好,在这里它可以被普遍规定)。其余的由您自己决定,因为您更好地理解了上下文。但是,正如已经讨论过的,根据法律的精神,您可能应该默认不区分大小写,除非您有很好的理由不这样做。
老问题,但我在这里绊了一下,所以为什么不尝试一下呢,因为这个问题寻求的是不同的观点,而不是一个确定的答案。
w3c可能有它的建议-我很关心-但想要重新考虑,因为问题在这里。
为什么w3c认为域名是不区分大小写的,并且在后面留下不区分大小写的内容?
我认为基本原理是URL的域部分是由用户手动输入的。
超文本之后的所有内容都将由机器(浏览器和后面的服务器)解析。
机器可以比人类更好地处理不区分大小写的问题(不是技术上的:))。
但问题是,仅仅因为机器可以处理,就应该这样做吗?
我的意思是命名和访问位于hereIsTheResource和hereIsTheResource的资源的好处是什么?
横向图比驼色图更难读,驼色图更容易读。
人类可读(包括技术类)
以下是我的观点:-
资源路径位于编程结构的中间位置,有时靠近浏览器后面的终端用户。
你的URL(不包括域名)应该不区分大小写,如果你的用户希望触摸它或键入它等等。在开发应用程序时,应该尽量避免让用户键入路径。
你的URL(不包括域名)应该区分大小写,如果你的用户从来不会手动输入它。
结论
Path应该区分大小写。我的观点倾向于区分大小写。
url应该不区分大小写,除非有很好的理由说明它们不应该区分大小写。
这不是强制性的(它不是RFC的任何一部分),但它使url的通信和存储更加可靠。
如果我在网站上有两页:
http://stackoverflow.com/ABOUT.html
and
http://stackoverflow.com/about.html
它们有何不同?也许有人写的是“大喊风格”(大写)——但从IA的角度来看,这种区别永远不应该通过URL的变化来区分。
此外,在Apache中很容易实现这一点-只需从mod_spelling使用CheckSpelling On。