FreeBSD QandA 1650

FreeBSD QandA

Q. apache を 1.3.12 にしたところ、認証をしかけてあるページなど
   一部のページが Netscape Navigator で化けて表示されてしまいます。

A. セキュリティ上の理由から apache-1.3.12 以降では、apache が
   生成する HTTP ヘッダに charset が付くようになりました。
     <URL:http://httpd.apache.org/info/css-security/> 

   リダイレクトされたページや認証を要求したページなどは、一度クライアントに
     Content-type: text/html; charset=iso-8859-1
     Location: http://......
   というヘッダが返り、ブラウザは Location ヘッダで示された URL を
   再度読み込みます。

   しかし Netscape Navigator は
      Location で示されたページに charset が指定されていないと、
      前ページの charset を次ページに引き継いでしまう
   というバグがあるため、日本語のページを charset=iso-8859-1 だと
   勘違いして化けて表示してしまうのです。

   ですから、AddCharset, AddDefaultCharset, ForceType などのディレクティブを
   使って、Location で示されたページが HTML ファイルに見当った charset を
   返すように設定すれば解決します。

   例えば、あるディレクトリ以下に iso-2022-jp な HTML ファイルしか存在
   しないなら (たとえば MHonArc で作成している ML Archive など)
   httpd.conf に
     <Directory "/usr/local/apache/htdocs/ML">
       AddCharset ISO-2022-JP .html
     </Directory>
   と書きます。

   また、一般ユーザ権限しかなく、全コンテンツが EUC-JP で記述されている
   なら、~/public_html/.htaccess に
      AddCharset EUC-JP .html
   と書けばよいでしょう。

   参考ページ
     <URL:http://www.asahi-net.or.jp/~AE5T-KSN/apache/charset-problem.html>

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。