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.comEXAMPLE.COM

次にファイルシステムです。Windows は、大文字と小文字を区別しない NTFS を使用するため、同じファイルabc.htmlを参照します。aBc.htmlほとんどの Linux ディストリビューションは、大文字と小文字を区別する EXT4 を使用するためabc.html、 とaBc.htmlは 2 つの異なるファイルです。

つまり、Web サーバーは、ファイル名の大文字と小文字が区別されるファイル システムで実行されているため、 2 つの異なるファイルabc.htmlを参照します。aBc.html

于 2012-10-30T04:24:32.177 に答える
1

HTMLの一部の構成は大文字と小文字を区別しますが、一部はHTMLのバージョンに依存します。hrefHTMLを考慮する限り、属性値では常に大文字と小文字が区別されます。

属性値のhref値はURL(または正式にはURI)として処理され、大文字と小文字を区別しないように指定された部分を除いて、URLは大文字と小文字を区別します。ここで、値は絶対URLに解決されるため、文字列abc.htmlはパス部分になり、その部分では大文字と小文字が区別されません。

サーバーがURLをどのように処理するかは、その裁量に委ねられています。同じリソースを参照している場合は、abc.htmlaBc.html(またはabc.html、さらに言えば、と)を同じように扱うことができます。foobar

一般に信じられていることとは異なり、URLはファイル名ではなく、サーバーはURLをファイル名にマッピングするだけでなく、さまざまなことを実行できます。サーバーで特定の書き換えルールを使用して、パス部分で大文字と小文字を区別しないようにすることはかなり一般的です。

ただし、サーバーが実行されている場合、たとえば、Linuxでデフォルト設定が設定された、すぐに使用できるバージョンのApacheが実行されている場合、これはかなり一般的な設定であり、パス部分は簡単な方法でファイル名にマップされます。ファイルシステムでは、これらの名前では大文字と小文字が区別されます。

于 2012-10-30T07:23:54.817 に答える
1

UNIX ライクなプラットフォームでは、ファイル名大文字と小文字を区別しますが、大文字と小文字を区別しないのは Windows だけです。これは実際には、HTML が大文字と小文字を区別しないこととは何の関係もありません。

ただし、Windows 上の IIS では、仮想パス大文字と小文字が区別されますが、実際のファイル パスは区別されないことに注意してください。

したがって、Windows では、aBc.htmlabc.htmlがまったく同じファイルであると想定するのは正しいことです。

このため、互換性の理由から、HTML のパスの大文字と小文字を常にファイル システムのパスと一致させる必要があります。

于 2012-10-30T04:23:42.947 に答える
0

つまり、基本的な答えです。UNIX ベースのプラットフォームでホストされている場合、それは重要です。アドバイス: すべて小文字で名前を付けてください。

于 2012-10-30T04:35:01.530 に答える