我有这个:
<div class="menuHolder">
<nav class="menu">
<ul id="menu">
<li class="with_ul"><a id="panorama"><span class="overPlane"></span><span class="mText">panorama</span></a>
<ul class="submenu_1">
<li><a href="abc.html">Test</a></li>
<li><a href="#!/pageMore">Profile</a></li>
<li><a href="#!/pageMore">History</a></li>
</ul>
</li>
</ul>
</nav>
</div>我已经有一个名为aBc.html的文件了
当我点击测试时,我得到了404。如果我把线改为
<li><a href="aBc.html">Test</a></li>效果很好。
我知道HTML不区分大小写,但是为什么会发生这种情况呢?我做错什么了吗?
发布于 2012-10-30 04:24:32
URL是区分大小写的域名.example.com和EXAMPLE.COM都解析到同一个地址,但域名之后的任何内容都是区分大小写的.
现在来看看文件系统。Windows使用NTFS,它不区分大小写,因此abc.html和aBc.html引用同一个文件.大多数Linux发行版都使用区分大小写的EXT4,因此abc.html和aBc.html是两个不同的文件。
简而言之,您的where服务器运行在文件系统上,其中文件名区分大小写,因此abc.html和aBc.html引用两个不同的文件。
发布于 2012-10-30 04:23:42
在类似UNIX的平台上,文件名是区分大小写的,只有不关心大小写。这实际上与HTML不区分大小写无关。
但是,请注意,对于Windows上的IIS,虚拟路径是区分大小写的,而不是实际的文件路径。
因此,在Windows下,假设aBc.html和abc.html完全相同是正确的。
因此,出于兼容性原因,应该始终将中路径的大小写与文件系统上的路径匹配。
发布于 2012-10-30 07:23:54
HTML中的一些结构区分大小写,有些则不区分大小写,部分取决于HTML版本.href属性值在考虑的范围内总是区分大小写的.
href属性值的值被处理为URL (或者形式上是URI),并且URL是区分大小写的,除非指定的部分不区分大小写。在这里,该值被解析为一个绝对的URL,因此字符串abc.html成为路径部分,并且该部分不受区分大小写的限制。
然后,服务器对URL所做的操作将由服务器自行决定。它很可能将abc.html和aBc.html (或abc.html和foobar )视为相同的资源。
与流行的观点相反,URL不是文件名,服务器可以使用它们玩很多事情,而不是简单地将它们映射到文件名。在服务器中使用某些重写规则使路径部件不区分大小写是相当常见的。
但是如果服务器正在运行,例如,在Linux上使用默认设置的开箱即用的Apache版本,这是一个相当常见的设置,那么路径部分将以一种简单的方式映射到文件名,而在Linux文件系统中,这些名称是区分大小写的。
https://stackoverflow.com/questions/13132572
复制相似问题