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

関連記事

【GitLab】GitLab RunnerでAndroidアプリテスト

GitLabはCI/CD機能が実装されており、GitLab Runnerを用いてAndroidアプリのJUnitを行ってみた。 .gitlab-ci.yml image: openjdk:8-jdk ...

PHPExcelで複数ページの帳票作成

PHP Excelで複数ページの帳票を作成する際、試行錯誤をしていたのでそのメモ やりたいこと ・表示用のシートとコピー用シートの2つを用意(表示用及びコピー用は同じレイアウト) ・表示用シートに一定 ...

no image
【AWStats】ログローテーションが「日付形式」でも大丈夫!過去ログを自動で取り込むシェルスクリプト

前回、Apacheでローテーションの設定を行いました。 しかし、ローテーションを行ったせいかAWStatsが正常に動かなくなりました…… Vine5からはaccesslog.1のような数字ではなく、日 …

【Windows 7】XPから共有フォルダにアクセスできない|「非ページプール」エラー(イベントID 2017)の解決策

自分のPCはVISTA&Windows7だったので、特に違和感はなかったのだが、XPユーザーから急に共有ファイルが見れなくなったといわれました。 Windows7が搭載されているマシンに共有フォルダを …

【Windows】ディレクトリ構造(フォルダ)のみコピーする方法

Windowsではファイルやフォルダをコピーするときに、コピー(Ctrl+C)&ペースト(Ctrl+P)で簡単に実行することができます。 しかし、ファイルはコピーせずにフォルダ階層のみコピーしたい場合 ...

【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