FreeBSD QandA 1650
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 まで
お知らせください。