1

可能重复:
HTML 区分大小写的问题

我有这个:

<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 不区分大小写,但是为什么会这样呢?我做错什么了吗?

4

4 回答 4

7

URL 在域名之后区分大小写。example.com并且EXAMPLE.COM两者都解析到相同的地址,但域名之后的任何内容都区分大小写。

现在来文件系统。Windows 使用不区分大小写的 NTFS,因此abc.htmlaBc.html引用同一个文件。大多数 Linux 发行版使用 EXT4,它区分大小写,因此abc.htmlaBc.html两个不同的文件。

简而言之,您的网络服务器运行在文件名区分大小写的文件系统上,因此abc.html引用aBc.html两个不同的文件。

于 2012-10-30T04:24:32.177 回答
1

在类 UNIX 平台上,文件名区分大小写,只有 Windows 不关心大小写。这实际上与 HTML 不区分大小写无关。

但是请注意,对于 Windows 上的 IIS,虚拟路径区分大小写,而不是实际文件路径。

因此,在 Windows 下,假设aBc.htmlabc.html是完全相同的文件是正确的。

因此,出于兼容性原因,应始终将HTML 中路径的大小写与文件系统上的路径匹配。

于 2012-10-30T04:23:42.947 回答
1

HTML 中的一些结构区分大小写,而另一些则不区分大小写,部分取决于 HTML 版本。就 HTML 而言,href属性值始终区分大小写。

属性值的href值作为 URL(或正式的 URI)处理,并且 URL 区分大小写,但指定为不区分大小写的部分除外。在这里,值被解析为绝对 URL,以便字符串abc.html成为路径部分,并且该部分区分大小写。

服务器对 URL 的处理由其自行决定。它很可能将abc.htmlaBc.html(或abc.htmlfoobar就此而言)相同地对待,作为指代相同的资源。

与普遍的看法相反,URL 不是文件名,服务器可以用它们玩很多东西,而不是简单地将它们映射到文件名。在服务器中使用某些重写规则使路径部分不区分大小写是很常见的。

但是,如果服务器正在运行,例如,在 Linux 上具有默认设置的开箱即用版本的 Apache,这是一种相当常见的设置,那么路径部分会以简单的方式映射到文件名,并且在 Linux文件系统 这些名称区分大小写。

于 2012-10-30T07:23:54.817 回答
0

因此,基本答案是:如果您托管在基于 UNIX 的平台上,这很重要。忠告:用小写字母命名所有内容,这将使您的生活更轻松

于 2012-10-30T04:35:01.530 回答