2026年6月27日

2026年6月27日

WordPressでfavicon.icoが404になる原因と正しい設置方法

サーバーのアクセスログや Search Console、ブラウザの開発者ツールに /favicon.ico の 404 が並ぶ場合、多くは「サイトアイコンが未設定」か「/favicon.ico へのリクエストが WordPress まで届いていない」のどちらかです。この記事では、WordPress が favicon.ico をどう扱っているかを押さえたうえで、404 の原因を切り分け、管理画面からのサイトアイコン設定と、ドキュメントルートへの favicon.ico 設置の両方で解決する方法を解説します。

WordPress は favicon.ico をどう処理しているか

ブラウザは、ページの HTML に <link rel="icon"> が無い場合や、HTML 以外のファイルを開いたときなどに、サイトのルートにある /favicon.ico を自動的に要求します。クローラーや RSS リーダーも同様にルートの favicon.ico を見に行くことがあります。

WordPress 5.4 以降では、ルートに実ファイルの favicon.ico が無い場合、このリクエストを WordPress 自身が受け取って処理します。サイトアイコンが設定されていればその画像へ、未設定なら WordPress のロゴ画像へリダイレクトする仕組みです。つまり、通常の構成で WordPress が動いていれば、favicon.ico は 404 にならず、リダイレクト(302)が返るはずです。

逆に言えば、404 が返るのは次のような場合です。

  • Web サーバーの設定で、/favicon.ico へのリクエストが WordPress に渡されず、静的ファイルとして探されている
  • WordPress をサブディレクトリ(例: /blog/)で運用していて、ドメイン直下は WordPress 以外のフォルダーになっているため、/favicon.ico が WordPress の管理外にある
  • .htaccess の書き換えルールが無効になっている、またはパーマリンク設定が壊れている
  • CDN やキャッシュが、過去の 404 応答を保存したまま返している
  • 古いバージョンの WordPress で、実ファイルも置いていない

手順1:実際の応答を確認する

まず、/favicon.ico が何を返しているかを確かめます。ブラウザで https://example.com/favicon.ico を直接開き、開発者ツール(F12)の「ネットワーク」タブでステータスを見ます。SSH やターミナルが使えるなら curl が手早い方法です。

curl -I https://example.com/favicon.ico

確認するのは次の3点です。

  • ステータスが 302 で、location が画像の URL: WordPress が処理している状態。リダイレクト先の画像が 404 でなければ問題ありません
  • ステータスが 404 で、WordPress の 404 ページの HTML が返る: WordPress には届いているが処理されていない。古い WordPress か、プラグインやテーマの影響を疑います
  • ステータスが 404 で、nginx や Apache の素の 404 ページが返る: WordPress まで届いていません。Web サーバーの設定やインストール場所を確認します

応答ヘッダーに CDN のキャッシュ状態(HIT など)が出ている場合は、CDN のキャッシュを削除してから再確認します。

手順2:管理画面でサイトアイコンを設定する

いちばん基本の対策は、管理画面でサイトアイコンを登録することです。登録すると、WordPress が各ページの <head> に複数サイズのアイコン用 link タグを出力し、ブラウザは /favicon.ico を探しに行く前にそちらを使うようになります。

クラシックテーマの場合は、「外観」→「カスタマイズ」→「サイト基本情報」に「サイトアイコン」の項目があります。正方形で 512 × 512 ピクセル以上の画像が推奨されており、アップロード後に切り抜き範囲を指定して公開します。

ブロックテーマでは、カスタマイザーのメニューが表示されないことがあります。その場合は、「設定」→「一般」にサイトアイコンの項目があるか確認するか、サイトエディターでサイトロゴブロックを選び、ブロックの設定にある「サイトアイコンとして使用」を有効にします。画面の配置は WordPress のバージョンによって異なります(2026年10月現在)。

設定後はページのソースを表示し、rel="icon" の link タグが出力されているかを確認します。出ていない場合は、テーマの header.php から wp_head() の呼び出しが消えていないかを疑います。サイトアイコンのタグは wp_head フックで出力されるため、この関数が無いテーマでは表示されません。

手順3:ドキュメントルートに favicon.ico を置く

サイトアイコンを設定しても、ログに残る /favicon.ico の 404 が消えない場合や、WordPress を通さず軽く応答させたい場合は、実ファイルを置くのが確実性の高い方法です。

  1. 16 × 16、32 × 32、48 × 48 ピクセルを含む .ico ファイルを用意する(画像編集ソフトや ico 変換ツールで作成)
  2. FTP やファイルマネージャーで、ドメインのドキュメントルート(ブラウザで https://example.com/ にあたるフォルダー)に favicon.ico という名前でアップロードする
  3. ブラウザで https://example.com/favicon.ico を開き、アイコンが表示されることを確認する

ここでつまずきやすいのが置き場所です。サイトを https://example.com/blog/ のようなサブディレクトリで運用している場合、WordPress のフォルダーではなく、ドメイン直下のフォルダーに置く必要があります。ブラウザが要求するのはドメインのルートにある /favicon.ico だからです。

実ファイルを置くと、Web サーバーが PHP を動かさずに直接返すため、WordPress の処理負荷も減ります。サイトアイコンと実ファイルの両方を用意しておけば、どの経路で要求されてもアイコンが返ります。

手順4:Web サーバーの設定を確認する

実ファイルを置かずに WordPress の処理に任せたい場合は、/favicon.ico が WordPress まで届く設定になっているかを確認します。

nginx では、次のような location ブロックがよく使われています。

location = /favicon.ico {
    log_not_found off;
    access_log off;
}

この設定は「ファイルが無ければ 404 をログに残さず返す」という意味で、WordPress には渡しません。WordPress に処理させたいなら、try_files を加えて index.php に渡します。

location = /favicon.ico {
    try_files $uri /index.php?$args;
    log_not_found off;
    access_log off;
}

変更後は nginx -t で構文を確認してから再読み込みします。設定を書き換える前には、元の設定ファイルのコピーを保存しておいてください。

Apache の場合は、WordPress 標準の .htaccess の書き換えルールが有効なら、存在しないファイルへのリクエストは index.php に渡されます。404 になる場合は、「設定」→「パーマリンク」を開いて何も変えずに「変更を保存」を押すと、.htaccess のルールが再生成されることがあります。.htaccess を手で編集する前には、既存ファイルをバックアップしてください。

手順5:プラグインやキャッシュの影響を除く

セキュリティ系プラグインや最適化プラグインの中には、特定のパスへのアクセスを制限したり、favicon のタグを独自に出力したりするものがあります。Health Check & Troubleshooting のトラブルシューティングモードでプラグインを無効にした状態の表示を確認し、そこで正常になればプラグインが原因です。

アイコンを差し替えたのに古いものが表示される場合は、ブラウザのキャッシュも疑います。favicon は長く保存されやすいため、別のブラウザやシークレットウィンドウで確認すると判断しやすくなります。

まとめ

  • WordPress 5.4 以降では、実ファイルが無くても /favicon.ico はリダイレクトで処理されるため、404 は「WordPress まで届いていない」サインであることが多い
  • curl やネットワークタブで、ステータスと 404 ページの種類を確認して原因を切り分ける
  • 管理画面でサイトアイコンを設定し、wp_head() によって link タグが出力されているか確認する
  • ドキュメントルートに favicon.ico を置くと、どの経路でもアイコンを返せて負荷も減る
  • nginx の location = /favicon.ico やキャッシュ、プラグインの影響も確認する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲