マルチサイト化したWordPressの子サイトや管理画面がNot Foundになる場合の対処法

先日、WordPressのマルチサイト化のご依頼を受けまして、
テストサイトで動作検証をしていたところ、
設置した子サイトやダッシュボードが表示されなくなる。
というトラブルにハマってしまいました。

設置環境によって対処法が異なる可能性もありますが、
解消できた方法をメモしておきます。

WordPressのマルチサイト化

どうやら.htaccessの「RewriteRule」部分がおかしい

今回検証していたテストサイトは、

・さくらサーバー
・サブディレクトリタイプのマルチサイト
・ルートでは無くサブディレクトリ内にインストールしたWPでマルチサイト化

という条件で運用していたのですが、
管理画面や子サイトが表示されない事態に陥りました。

原因はマルチサイト化にしたときにWordPressが
「これを使いなさい」と表示してくれる.htaccessの記述が
不適切なものになっていたからでした。
RewriteRuleに書かれているパスに問題があったようです。

おそらく、開発者がサブディレクトリへのインストールを
考慮していないのではないかと思われます。

問題なのはWordPressが提示する.htaccess内で
下から4行目ぐらいにある下記の2行です。

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) WPへのパス $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ WPへのパス $2 [L]

上記で「WPへのパス」と書いてある部分が、
本来必要とされるパスになっていませんでした。

今回の場合、hogehoge.comという独自ドメインを
hogehogeというフォルダに割り当てていて、その中にWPをインストールしていました。
さくらサーバーでは、「www/hogehoge/」というディレクトリ構成になります。

ダッシュボードや子サイトが表示されない原因はこの方法で解決しました。

そして、このときWordPressが吐き出したRewriteRuleは

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) hogehoge/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ hogehoge/$2 [L]

になっているので、管理画面へのアクセスは本当は

●http://hogehoge.com/wp-adimin/network/…..

となるはずですが、このRewirteRuleだと

●http://hogehoge.com/hogehoge/wp-adimin/network/…….

にアクセスしようとするので
「そんなページはない!」とエラーが発生していたというわけです。
ですので、今回の場合はhogehoge/の部分が必要ないので、
その部分を削除して下記のようにすると

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]

無事正常に表示されるようになりました。
パスをどう編集するかはサーバーによって変わりますし、
マルチドメインのマルチサイトでは全く違う原因かもしれません。

ですが、同じやり方で解決できる可能性もゼロではないので
必要とする人のために解決した方法をメモしておきました。
WordPressのマルチサイト化でハマっている場合はご参考までに。

なお、設置条件により対処法が変わってきますが、
マルチサイト化の無料サポート等はやっておりませんので、
今回の対処法をご参考いただき、各自で対応をお願いいたします。
(執筆:めしお

●本日のまとめ
サブディレクトリのWordPressをマルチサイト化して運営する際に、
追加した子サイトやダッシュボードが表示されないトラブルに陥ったが、
.htaccessの記述内容を修正したところ表示されるようになった。

この記事へのコメント

  1. おさき2015年1月20日 00:13

    2日徹夜で悩んだことが、お蔭様で、この書き込みで解決できました。神様にめぐり合った気持ちです。誰にも相談できず苦しんでおりましたが、解決でき肩の荷が降りました。感謝に耐えません。お体にご留意されまして、益々のご活躍を祈念しております。

    返信
    • めしお2015年1月20日 00:31

      おさきさん
      ありがとうございます。お役に立てたようで良かったです。

      返信
  2. たけし2015年2月15日 22:53

    助かりました!
    こちらもサクラで同じ現象に陥っておりました。
    こちらの記事通り作業をしたら、無事に動作することができました。
    ありがとうございます。

    返信
    • めしお2015年2月15日 23:21

      たけしさん、良かったです!さくらの場合はドンピシャの記事ですね。

      返信
  3. 残念ソンミン2017年6月23日 19:31

    失礼します。今マルチサイトにしてログインできないエラーになりましたが、何かアドバイスありましたら、よろしくお願いします。

    ・サイトネットワーク管理ダッシュボード : ログインできない。
    ・親サイトダッシュボード : ログインできない。
    ・子サイトダッシュボード : ログインできる。

    .htaccessの内容

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]

    # add a trailing slash to /wp-admin
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ – [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]

    返信
    • めしお2017年6月23日 19:51

      ごめんなさい。
      備忘録として残しただけなので、アドバイス等は受け付けていないのです。

      返信
  4. 貴公子2018年1月15日 17:35

    諦めかけようとしてた時に、このサイトに出会いました。
    感謝いたします。

    返信

コメントする