• 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 の認証期間が終了しました。ページを再読み込みしてください。

関連記事

no image
【Java】log4jdbcで「setStringは32766文字未満…」エラー!CLOB登録時のAbstractMethodError回避策

センター試験の日ですね。受験生の方は実力発揮できるようにがんばってください。 おはようございます。渉猟です。 仕事でJAVAバッチ製作で、SQLログ吐き出しができるようにlog4jdbcを使っています …

iPhone iPadでExcelファイルを開くと文字化けする

JAVAやExcelでPDFやExcel、Wordを作成し出力する際、パソコンでは問題なく表示できるのにiPhone、iPadではうまく表示してくれない場合があります。 原因 MIME TYPEがヘッ ...

【Eclipse】jar・classファイルのソースを閲覧する方法

Eclipseでソースを見ようとしても見れない場合がある Eclipseでソース確認しているときに、たまに「ソースが見つかりませんでした。」というエラーが出る場合があります。 ビルドしているからソース ...

【PowerShell】外部ファイル実行時にポリシーエラーが発生する際の対処方法

PowerShellを外部ファイルから実行するとセキュリティエラーが発生しました。 PS E:powershell> .test .test : このシステムではスクリプトの実行が無効になってい ...

Apache Log4j の脆弱性(CVE-2021-44228)

かなり深刻な脆弱性が見つかり、てんやわんや状態です。 Javaで構築システムのほとんどはlog4jまたはその派生を使用しているので、一気に広まりました。 CVSSが10という最高値の脆弱性評価となって ...

【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