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

関連記事

repomd.xml GPG signature verification error: Bad GPG signature

RockyLinuxにインストールしているgitlab_runnerをアップデートしようとしたらエラーが発生した。 [root@localhost dnf]# dnf update runner_gi ...

【Rocky Linux】gitlab-runnerの更新エラー「Bad GPG signature」の原因と手軽な解決策

RockyLinuxにインストールしているgitlab_runnerをアップデートしようとしたらエラーが発生した。 [root@localhost dnf]# dnf update runner_gi …

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

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

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

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

【OpenSSL】SANにDNS情報を付与したサーバ証明書を作成する方法

サーバ証明書を作成するにはSubjectフィールドのCommon Name属性にDNSまたはIPアドレス情報を付与することができますが、一部のブラウザではSubject Alternative Nam ...

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

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

Wi-Fi8(IEEE802.11bn)とは?Wi-Fi7との違いや次世代の「超・高信頼性」を解説

2026/4/18

Wi-Fi7(IEEE802.11be)とは?従来規格との違いや新機能を解説

2026/4/18

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

2025/11/17

Hardening 2024 Convolutions

2025/5/10

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

2025/5/11

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

色々なことを徒然と……

Kaede Blog

© 2026 Kaede Blog