我有这个:
<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的文件
当我点击Test时,我得到一个404.如果我将该行改为
<li><a href="aBc.html">Test</a></li>
它工作正常。
我知道HTML不区分大小写,但为什么会发生这种情况呢?我做错了吗?
答案 0 :(得分:7)
网址区分大小写区分大小写。 example.com
和EXAMPLE.COM
都解析为同一地址,但域名后面的任何内容都区分大小写。
现在来到文件系统。 Windows使用NTFS,它不区分大小写,因此abc.html
和aBc.html
引用相同的文件。大多数Linux发行版使用区分大小写的EXT4,因此abc.html
和aBc.html
是两个不同的文件。
简而言之,您的网络服务器在文件系统上运行,其中文件名区分大小写,因此abc.html
和aBc.html
指的是两个不同的文件。
答案 1 :(得分:1)
在类UNIX平台上,文件名 区分大小写,只有Windows不关心大小写。这实际上与HTML不区分大小写无关。
但请注意,对于Windows上的IIS,虚拟路径 区分大小写,但不是实际文件路径。
因此,在Windows下,假设aBc.html
和abc.html
是完全相同的文件是正确的。
因此,出于兼容性原因,应该始终将HTML中路径的大小写与文件系统上的路径匹配。
答案 2 :(得分:1)
HTML中的某些构造区分大小写,有些则不区分,部分取决于HTML版本。就考虑HTML而言,href
属性值始终区分大小写。
href
属性值的值被处理为URL(或者,正式地,URI),并且URL区分大小写,除了指定为不区分大小写的部分。此处将值解析为绝对URL,以便字符串abc.html
成为路径部分,并且该部分不免于区分大小写。
服务器对URL的影响由其自行决定。对于相同的情况,它可能会将abc.html
和aBc.html
(或abc.html
和foobar
视为同一资源。
与普遍看法相反,URL不是文件名,服务器可以使用它们播放许多内容,而不是简单地将它们映射到文件名。使用服务器中的某些重写规则使路径部分不区分大小写是相当常见的。
但是,如果服务器正在运行,例如,在Linux上使用默认设置的Apache的开箱即用版本,这是一种相当常见的设置,那么路径部分将以简单的方式映射到文件名,并且在Linux文件系统中,这些名称区分大小写。
答案 3 :(得分:0)
所以,基本答案:如果你托管在基于UNIX的平台上,那就很重要了。建议:用小写字母命名一切,这将使你的生活更加轻松