Apacheで画像が表示されないときの対処法|設定ミスをチェックする手順
ApacheでWebサイトを運用していると、HTMLやCSSは正常に表示されるのに、画像だけ表示されないというトラブルに直面することがあります。
特にローカル開発環境やWordPress、Laravel、静的サイトの公開時には、画像ファイルのパス、権限、設定ファイルのミスなどが原因で表示に失敗しやすくなります。
初心者のうちは、次のような状態で困ることが多いです。
-
ブラウザに画像だけ出ない
-
画像URLへ直接アクセスしても404になる
-
一部の画像だけ表示されない
-
Apacheを移行したら画像が見えなくなった
-
CSSやJSは読めるのに画像だけダメ
-
.htaccessを触ったあとから画像が表示されなくなった -
WordPressのアップロード画像が突然表示されない
-
本番サーバーだけ画像が出ない
画像が表示されない原因はひとつではありません。
ファイル自体が存在しない場合もあれば、パスの書き方ミス、DocumentRoot の設定ミス、パーミッション不足、mod_rewrite の影響、MIMEタイプの不整合、ホットリンク対策、シンボリックリンク制限、SELinuxや所有権の問題など、さまざまな要因が関係します。
この記事では、Apacheで画像が表示されないときに確認すべきポイントを、初心者でも順番に原因を切り分けられるように丁寧に解説します。
ローカル開発、Linuxサーバー、WordPress、一般的なApache運用を意識しつつ、どこから確認すればよいか、何が原因になりやすいか、どう直せばよいかをできるだけわかりやすく整理しています。
Apacheで画像が表示されないときに最初に理解しておきたいこと
画像が表示されないとき、まず大切なのは、「画像がない」のか「画像にアクセスできない」のかを切り分けることです。
同じように画像が出ていないように見えても、実際には次のように原因がまったく違います。
-
画像ファイルが存在しない
-
パスが間違っている
-
URLの大文字小文字が違う
-
Apacheがそのディレクトリにアクセスできない
-
.htaccessでブロックされている -
リダイレクトやrewriteで別URLへ飛ばされている
-
ファイル権限が不足している
-
シンボリックリンクの設定で拒否されている
-
MIMEタイプやレスポンスヘッダがおかしい
-
403や404や500が発生している
-
SSL混在コンテンツでブロックされている
-
CDNやキャッシュが古い
つまり、単に「画像が出ない」と考えるのではなく、
404なのか、403なのか、URLが違うのか、サーバーが拒否しているのかを確認することが重要です。
まず確認したい基本症状
画像が表示されないときは、ブラウザ上の見え方だけで判断せず、次の症状を確認します。
1. 画像URLに直接アクセスするとどうなるか
画像のURLをコピーして、ブラウザのアドレスバーへ直接入力してみます。
ここでの結果が重要です。
-
正常に画像が出る
-
404 Not Found
-
403 Forbidden
-
500 Internal Server Error
-
別ページへリダイレクトされる
-
ダウンロードになる
-
壊れた画像アイコンだけ出る
2. ブラウザの開発者ツールでステータスコードを見る
ChromeやEdgeの開発者ツールの「Network」で画像リクエストを確認すると、HTTPステータスがわかります。
-
200: リクエスト自体は成功している
-
404: ファイルが見つからない
-
403: アクセス拒否
-
500: サーバー側エラー
-
301 / 302: リダイレクトされている
3. すべての画像か、一部の画像か
-
全画像が表示されない
-
特定ディレクトリの画像だけ表示されない
-
一部ファイル形式だけ表示されない
-
WordPressのアップロード画像だけ表示されない
この違いで原因がかなり変わります。
Apacheで画像が表示されない主な原因一覧
先に全体像を整理すると、よくある原因は次のとおりです。
1. 画像パスの記述ミス
相対パス、絶対パス、URLの書き方が誤っている
2. 画像ファイルが存在しない
ファイル名違い、移動、削除、アップロード漏れ
3. 大文字小文字の違い
Linux系サーバーでよくある問題
4. パーミッション・所有者の問題
Apacheが画像ファイルを読めない
5. .htaccess や rewrite の影響
画像URLが別ルールに巻き込まれている
6. DocumentRoot や Alias 設定ミス
URLと物理ファイル位置の対応がおかしい
7. Directory 設定の問題
Apacheが対象ディレクトリへのアクセスを許可していない
8. シンボリックリンク制限
画像ディレクトリがsymlinkで、Apacheがたどれない
9. 403 Forbidden
アクセス許可がない
10. 404 Not Found
URL先にファイルが存在しない
11. MIMEタイプやレスポンスの問題
画像として正しく返されていない
12. mixed content
HTTPSページ内でHTTP画像を読もうとしてブロックされている
13. WordPressやCMS固有のURL不整合
アップロードURLやパーマリンク関連の問題
14. キャッシュ/CDNの問題
古いURLや壊れたレスポンスが配信されている
原因1:画像パスの書き方が間違っている
画像が表示されない原因として最も多いのが、HTMLやCSS内のパス記述ミスです。
よくある例
この書き方は、現在のHTMLファイル位置を基準に相対パスで読まれます。
もし実際のファイル構成が違えば、画像は見つかりません。
たとえば次のような構成
├── index.html
├── images/
│ └── logo.png
└── pages/
└── about.html
index.html からは
で正しいですが、pages/about.html から同じように書くと失敗します。
この場合は
または
が必要です。
CSSで特に多いミス
CSS内の url() は、HTMLではなくCSSファイルの場所基準で解決されます。
もしCSSファイルが /css/style.css にあるなら、この指定は /css/images/bg.jpg を見に行く可能性があります。
解決策
-
HTML基準かCSS基準かを確認する
-
相対パスと絶対パスを整理する
-
一度ブラウザで画像URLを直接開いて確認する
-
開発者ツールのNetworkで実際にどのURLへアクセスしているか見る
原因2:画像ファイルがサーバー上に存在しない
シンプルですが非常に多い原因です。
ローカルでは存在していても、本番にアップロードされていないことがあります。
よくあるケース
-
デプロイ時に画像ファイルだけ漏れている
-
Git管理対象外で本番へ反映されていない
-
画像を移動したのにHTML/CSSの参照が古い
-
WordPressのuploadsディレクトリが不完全
-
画像名を変更したのにコード側が古いまま
確認方法
Linuxなら実ファイルを確認します。
ディレクトリ単位でも確認できます。
解決策
-
本当にそのパスにファイルがあるか確認する
-
本番環境へアップロードされているか確認する
-
デプロイ設定やビルド成果物に画像が含まれているか確認する
-
CMSのメディア保存先を確認する
原因3:ファイル名の大文字小文字が違う
Windowsでは気づきにくいですが、LinuxのApacheではファイル名の大文字小文字が区別されます。
例
実際のファイル名:
HTML側:
この場合、Linuxサーバーでは別ファイルとして扱われ、404になります。
よくあるパターン
-
logo.jpgと書いたつもりが実際はLogo.jpg -
.PNGと.pngが違う -
開発環境がWindowsで、本番がLinux
解決策
-
実ファイル名を正確に確認する
-
HTML/CSS/JS側のURLを完全一致させる
-
画像命名ルールを小文字統一にする
原因4:ファイルやディレクトリのパーミッションが不適切
Apacheは画像ファイルへアクセスできないと表示できません。
Linuxサーバーでは特に、ファイル権限とディレクトリ権限が重要です。
よくある症状
-
403 Forbidden が出る
-
画像だけ読み込めない
-
HTMLは見えるのに一部ディレクトリ配下だけ見えない
確認方法
ディレクトリも確認します。
一般的な目安
-
ディレクトリ:
755 -
ファイル:
644
例
chmod 644 /var/www/html/images/logo.png
所有者も確認する
環境によってApacheユーザーは異なります。
-
www-data -
apache -
httpd
解決策
-
Apache実行ユーザーが読める権限にする
-
ディレクトリに実行権限があるか確認する
-
所有者を適切に設定する
原因5:ApacheのDirectory設定でアクセスが禁止されている
Apacheでは、ファイルが存在しても Directory 設定でアクセス拒否されることがあります。
よくある設定例
Require all denied
</Directory>
この場合、画像ディレクトリへのアクセスは拒否されます。
Apache 2.4系でよく使う設定
Require all granted
</Directory>
症状
-
403 Forbidden
-
特定ディレクトリ配下だけ画像が表示されない
解決策
対象ディレクトリに適切な許可を与えます。
Require all granted
</Directory>
変更後はApache再起動またはリロードが必要です。
または
Si quieres conocer otros artículos parecidos a Apacheで画像が表示されないときの対処法|設定ミスをチェックする手順 puedes visitar la categoría Detakaiseki.
