• About
  • Contact

色々なことを徒然と……

Kaede Blog

  • About
  • Contact
  1. HOME >
  2. 技術・開発 >

技術・開発

【Apache】サーバー移行で画像が消えた!? バーチャルホスト単位で文字コード(EUC-JP)を指定して直す方法

2012年10月11日 2026年2月22日

新しいサーバーへWebサイト(今回はMHF Wiki)を移行した際、「テキストは表示されるのに、画像だけがずっと非表示(リンク切れ)になる」というトラブルに遭遇しました。

画像のURLを直接ブラウザで叩いてみると、「ファイルが見つかりません(404 Not Found)」というエラーが…。
FTPソフトでサーバーの中身を確認すると、画像ファイル自体は間違いなくアップロードされています。

原因:URLパスのエンコード不一致(UTF-8 vs EUC-JP)

原因を調べていくと、「文字コード(エンコード)」の違いであることが判明しました。

古いWikiシステム等では、日本語を含む画像ファイル名やURLパスが「EUC-JP」で処理されていることがよくあります。
しかし、最近の新しいサーバー(OSやApache)は標準の文字コードが「UTF-8」になっているため、EUC-JPで飛んできたリクエストを正しく解釈できず、「そんな名前のファイルはない」とエラーを返してしまっていたのです。

解決策:VirtualHostで個別に文字コードを指定する

この問題を解決するには、サーバー(Apache)側に「このサイトはEUC-JPで処理してね」と教えてあげる必要があります。

.htaccess に記述して制御する方法もありますが、今回はサーバー全体の php.ini や他のドメインに影響を与えないよう、Apacheのバーチャルホスト(VirtualHost)設定に直接記述して修正することにしました。

Apacheの設定コード(httpd.conf / vhost.conf)

該当するドメインの <VirtualHost> ディレクティブ内に、以下の記述を追加します。

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html/mhfwiki
    ServerName wiki.example.com

    # Apache自体のデフォルト文字コードをEUC-JPに設定
    AddDefaultCharset euc-jp

    # PHPがモジュールとして動いている場合、このドメイン内だけPHPの文字コード設定を上書きする
    <IfModule mod_php5.c>
        php_flag  output_buffering        Off
        php_value output_handler          none
        php_value default_charset         EUC-JP
        php_value mbstring.language       Japanese
        php_flag  mbstring.encoding_translation On
        php_value mbstring.http_input     auto
        php_value mbstring.http_output    EUC-JP
        php_value mbstring.internal_encoding    EUC-JP
        php_value mbstring.substitute_character none
    </IfModule>
</VirtualHost>

設定のポイント

  • AddDefaultCharset euc-jp:Apacheがブラウザに返すHTTPヘッダーの文字コードをEUC-JPにします。
  • <IfModule mod_php5.c> 内の記述:PHPスクリプト内で処理される文字コード(内部エンコーディングやHTTP出力)を強制的にEUC-JPに合わせます。これにより、PHP側で生成されるURLやファイルパスも正しくEUC-JPとして扱われます。

設定ファイルを保存後、Apacheを再起動(またはリロード)して設定を反映させます。

# CentOS / RHEL系の場合
service httpd reload

# Debian / Ubuntu系の場合
service apache2 reload

結果:画像が無事に表示されました!

設定反映後、再度Wikiにアクセスしてみると……

無事に画像が表示されるようになりました!

古いシステムを新しいサーバーへ移行する際は、データベースやファイルの移行だけでなく「文字コードの互換性」にも気をつける必要がありますね。同じような症状でお悩みの方の参考になれば幸いです。

  • Post
  • Share
  • Hatena
  • Pinterest
  • LINE
  • note
  • コメント
  • URLコピー

-技術・開発
-apache, EUC-JP, php, VirtualHost, サーバー移行, トラブルシューティング, 文字コード, 文字化け

author


comment コメントをキャンセル

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

関連記事

【JAVA】各バージョンによるHashMapのIndex割り当ての違い

JavaのバージョンによりHashMapのIndexを求める方法が異なっていたのでメモ 各バージョンによる処理の違い 各バージョンのHashMapはどのように処理をしているのかソースにて見比べることに ...

no image
【Postfix】ClamAVと連携してメールのウイルスチェックを行う方法(clamav-milter)

メール送信の際でもウイルスチェックができるようにします。 前提:ClamAvがインストールおよびチェック可能な状態 PostFixも送受信ができる状態であること。 apt-get install?cl …

負の数(マイナス)で少数点を扱う場合、floorやceilは注意しよう

ceil・floor・roundの動作 JavaScriptで数値を切り上げ、切り捨て、四捨五入の処理を行う場合 小数点切り上げMath.ceil小数点切り捨てMath.floor小数点四捨五入Mat ...

【JavaScript】IE8でdocument.all("name").lengthがundefinedになる原因と対処法

7月から古いウェブサイトの改修作業を行っている。 今回はデザインの変更のみと聞いていたが、JAVAを修正したり、メインとなるウェブサイトに合わせるように行ったり、仕様が急に変わったりと後から沸々と出て …

【JavaScript】小数点以下桁数を0埋めする方法

HTMLで数値入力をした場合、小数点以下の桁数を自動的に合わせたい場合があります。 その場合、JavaScriptの関数【toFixed】を使用するの便利です。 toFixed 使い方:Number. ...

【Postfix】ClamAVと連携してメールのウイルスチェックを行う方法(clamav-milter)

【注意喚起】「久しぶり!」で始まる間違いメールにご用心?巧妙化するスパムの手口

大阪・関西万博2025 閉幕後備忘録

2025/11/17

Hardening 2024 Convolutions

2025/5/10

【車 住所変更 ③】運輸支局手続きとその他手続き

2025/5/11

【車 住所変更 ②】OSS申請

2025/5/11

【車 住所変更 ①】希望ナンバー申込

2025/5/13

  • no imageレビュー・その他
  • no image写真・旅行
  • no image技術・開発

色々なことを徒然と……

Kaede Blog

© 2026 Kaede Blog