2026年9月4日

2026年9月4日

WordPressマルチサイトで「サイトが存在しません」と表示される・サイトが見つからない場合の対処法

WordPressマルチサイトで「お探しのサイトは存在しません」と表示される、サブサイトにアクセスすると登録画面(wp-signup.php)に飛ばされる、移転後にネットワーク全体が表示されない、といった症状は、アクセスしたドメインとパスが、データベースに登録されたサイト情報と一致していないことが主な原因です。この記事では、マルチサイトがアクセス先のサイトを決める仕組み、症状ごとの見分け方、原因を可能性の高い順に並べた確認と修正方法を説明します。

マルチサイトはどうやってサイトを探しているか

マルチサイトでは、リクエストが届くたびに、WordPressがアクセスされたドメインとパスをデータベースのサイト一覧と照らし合わせ、どのサイトを表示するかを決めています。関係するのは主に次の場所です。

  • wp-config.php の定数:MULTISITE、SUBDOMAIN_INSTALL、DOMAIN_CURRENT_SITE、PATH_CURRENT_SITE、SITE_ID_CURRENT_SITE、BLOG_ID_CURRENT_SITE
  • wp_site テーブル:ネットワーク自体のドメインとパス
  • wp_blogs テーブル:各サイトのドメインとパス、公開状態(アーカイブ・スパム・削除のフラグ)
  • 各サイトの wp_{ID}_options テーブルの siteurl と home

アクセスしたドメインとパスに一致するサイトが wp_blogs に見つからないと、サイトが見つからない扱いになります。このとき、サブドメイン型では標準でメインサイトの登録画面に転送され、「お探しのサイトは存在しません」といった案内が表示されます。ユーザー登録を受け付けている設定なら、そのサイト名で新規作成を勧める表示になります。表示される文言は、WordPressのバージョンや言語設定で多少異なります。

ネットワーク自体(wp_site のドメイン)が一致しない場合は、さらに手前で止まり、「データベース接続確立エラー」のような画面になることがあります。データベースには接続できているのにこのエラーが出る場合、マルチサイトではドメインの不一致を疑います。

症状から原因の見当をつける

  • 移転やドメイン変更の後に、全サイトまたはメインサイトが表示されない:データベース上のドメインが古いまま
  • 特定のサブサイトだけ登録画面に飛ばされる:そのサイトの wp_blogs のドメインやパスが違う、またはサイトが作られていない
  • 「このサイトは利用できません」「アーカイブまたは停止されています」といった表示:サイトが削除・アーカイブ・スパムの状態になっている
  • サブディレクトリ型で、サブサイトの管理画面だけが404やリダイレクトのループになる:.htaccess やnginxの書き換えルールの不足
  • 意図しないURLへ転送される:NOBLOGREDIRECT の設定やプラグインの影響

原因と対処(可能性が高い順)

作業の前に、データベースのバックアップを取ってください。WP-CLIが使える場合は wp db export で保存できます。可能であれば、ステージング環境で手順を試してから本番に適用します。

1. データベースに登録されたドメインやパスが違う

もっとも多いのは、サーバー移転、ドメイン変更、www の有無の変更、HTTPS化の後に、wp_blogs や wp_site のドメインが古いまま残っているケースです。シングルサイトと違い、siteurl と home を書き換えるだけでは直りません。

まず、登録されている値を確認します。テーブルの接頭辞が wp_ 以外の場合は読み替えてください。

SELECT id, domain, path FROM wp_site;
SELECT blog_id, domain, path, archived, spam, deleted FROM wp_blogs;
SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');
SELECT option_name, option_value FROM wp_2_options WHERE option_name IN ('siteurl', 'home');

あわせて wp-config.php の定数を確認します。DOMAIN_CURRENT_SITE は https:// を付けず、ドメインだけを書きます。

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false ); // サブディレクトリ型は false、サブドメイン型は true
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

ドメインの書き換えには、シリアライズされたデータも正しく扱えるWP-CLIの search-replace を使うのが安全です。まず --dry-run で何件が置き換わるかを確認してから実行します。

wp search-replace 'old.example.com' 'example.com' --network --dry-run
wp search-replace 'old.example.com' 'example.com' --network
wp cache flush

--network を付けると、ネットワーク内の全サイトのテーブルが対象になります。phpMyAdminなどで直接SQLの置換をすると、シリアライズされたデータの文字数が合わなくなり、設定が壊れることがあるので避けてください。

2. サイトが削除・アーカイブ・スパムの状態になっている

wp_blogs の archived、spam、deleted のいずれかが 1 になっていると、そのサイトは停止中として扱われ、訪問者には利用できない旨の画面が表示されます。ネットワーク管理画面の「サイト」一覧で状態を確認し、必要なら有効に戻します。WP-CLIでも操作できます。

wp site list --fields=blog_id,url,archived,spam,deleted
wp site activate 2
wp site unarchive 2
wp site unspam 2

deleted のフラグは、ネットワーク管理画面でサイトを「無効化」したときに立つもので、activate で元に戻せます。一方、サイトそのものを削除した場合はテーブルごと消えるため、これらのコマンドでは戻せません。その場合はバックアップからの復元が必要です。

3. サブドメインのDNSやサーバー設定が足りない

サブドメイン型では、site2.example.com のようなサブドメインへのアクセスが、WordPressの入っているサーバーに届く必要があります。

  • DNSにワイルドカードのレコード(*.example.com)か、サブドメインごとのレコードがあるか
  • Webサーバーのバーチャルホストが、サブドメインへのリクエストをWordPressのディレクトリで受けているか
  • SSL証明書がサブドメインにも対応しているか(ワイルドカード証明書や、サブドメインを含む証明書)

DNSやサーバー側の設定が足りないとWordPressまで届かないため、表示はサーバーやブラウザのエラーになります。WordPressのメッセージが表示されているなら、サーバーまでは届いていると判断できます。

4. 書き換えルール(.htaccess・nginx)が足りない

サブディレクトリ型では、/site2/wp-admin/ のようなURLをWordPressのファイルに振り分ける書き換えルールが必要です。シングルサイト用の .htaccess のままだと、サブサイトの管理画面やCSSが読み込めないことがあります。ネットワーク管理画面の「設定」→「ネットワーク設定」に、その環境向けのルールが表示されるので、それと現在のファイルを比べます。編集前に元のファイルを保存しておいてください。nginxでは .htaccess が使えないため、同じ働きのルールをサーバー設定に書く必要があります。

5. 転送先の設定やプラグインの影響

wp-config.php に NOBLOGREDIRECT を定義していると、存在しないサイトへのアクセスは、登録画面ではなくその定義先へ転送されます。意図しない転送が起きる場合は、この定数の有無を確認します。また、サイトが見つからないときの処理には ms_site_not_found というアクションがあり、ドメインマッピングやリダイレクトのプラグインがここで独自の処理をしていることがあります。プラグインを入れた後に症状が出た場合は、ネットワークで有効化しているプラグインを wp-content/plugins のフォルダ名変更などで一時的に止めて確かめます。

6. オブジェクトキャッシュに古いサイト情報が残っている

RedisやMemcachedを使ったオブジェクトキャッシュを導入していると、データベースを直しても古いサイト情報が返されることがあります。データベースを修正した後は wp cache flush やキャッシュプラグインの機能でキャッシュを削除します。

修正後の確認方法

  1. メインサイトとサブサイトのトップページ、管理画面にそれぞれアクセスする
  2. wp site list で、すべてのサイトのURLが新しいドメインになっているかを確認する
  3. ログアウトした状態で、存在しないサブサイトのURLにアクセスし、意図した画面(登録画面や指定した転送先)になるかを確かめる
  4. 画像やリンクが古いドメインのまま残っていないか、主要なページで確認する

マルチサイトの書き換えや転送の設定は、サーバー会社の管理画面の仕様によって手順が異なることがあります。マルチサイトに対応していないプランや、独自の設定が必要なサーバーもあります(2026年10月現在)。

まとめ

  • マルチサイトは、アクセスされたドメインとパスを wp_blogs・wp_site と照らし合わせて表示するサイトを決めている
  • 「サイトが存在しません」の多くは、移転やドメイン変更後に登録されたドメインやパスが古いまま残っていることが原因
  • 修正はバックアップを取ってから、wp search-replace --network を --dry-run で確認して実行する。直接のSQL置換は避ける
  • サイトの停止状態、サブドメインのDNS・証明書、書き換えルール、NOBLOGREDIRECT、オブジェクトキャッシュの順に確認する
  • 修正後は全サイトのURLと、存在しないサイトへのアクセス時の挙動を確かめる

お気軽にご相談ください

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