WORDPRESSで後からサブディレクトリ型マルチサイトにする

necobitのページは現在WORDPRESSで構築しています。
開設して8年、だいぶコンテンツも増えて来て
最近一部をデータ的に別のサイトとして
管理したくなってきました。

WORDPRESSでは
http://aaa.exsample.com
というサブドメインタイプと
http://exsample.com/aaa/
というサブディレクトリタイプで別サイトが構築できるそうです。
(別ドメインもできるそうですが今回は割愛)

今回はサイト内コンテンツの管理のみを分離したいので、
後者のタイプを選択。
(後にわかったのだが、現在運用しているエックスサーバーでは
WORDPRESS上ではサブドメイン運用はできない模様)

しかし調べてみると、
WORDPRESSでのサイトを開設後1ヶ月以上経過すると
それ以降はサブディレクトリ型の複数サイト運用は
出来ない事が判明。
まあ意地悪でそんなことをする訳は無く、
なんらかの問題が発生する可能性が
あるということなんでしょう。

WORDPRESSを再インストールするとか、
この際サーバーを引っ越して1から構築しなおすかとか
色々考えたけどそうなるとかなり面倒。
なんとか無理矢理サブディレクトリ型のマルチサイトに
切り替えられないか調べたら、出来ました。

※一つ間違えるとデータベース、サイトデータが
消失、破損する可能性があります。
necobitも実際何度か冷や汗をかきました。
.htaccessって何?wp-cofig.phpって何?
という人は手を出さない方がいいです。
また後々問題が出てくる事もあるかもしれません。
やる際には自己責任で。

今回の作業にあたってこちらのページが(リンク)
とても参考になりました。
わかりやすい解説をありがとうございます。

下準備

大前提として、WORDPRESSのインストール先が
ドメイン直下である必要があるそうで、それ以外だと
色々と問題が出るそうです。

まずデータベースとサーバーのバックアップをとりましょう。
やり方がわからない人は失敗した時に全部消えて
画面の前で呆然とする事になるのでやらない方がいいです。

ある程度仕組みを理解できている人向けの簡単説明

通常のマルチサイト化の作業をしながら、
ネットワークのインストールでコンフィグを書き換える際に
define( ‘SUBDOMAIN_INSTALL’, true );
のtrueをfalseにする。
この時点でログインし直すと.htaccessの書き換え指示内容が
サブディレクトリ型のものに変わるので、
後はWORDPRESSの指示通りに。
ファイルのアップロードパスは空欄にする。
以上です。

詳細説明

ドメイン直下のwp-config.phpファイルに
以下の文を追加します。

define (‘WP_ALLOW_MULTISITE’, true);

マルチサイトにするよ、という宣言ですね。
場所はどこでもいいようです。

その後WORDPRESSにログインすると、
「ツール」→「ネットワークの設定」
が出てきます。(WORDPRESSのバージョンによって
名称や場所が違う事があるようです)
WORDPRESS設置直後だとここで
サブドメイン型とサブディレクトリ型の
選択が出るのですが、前に書いた通り
開設から時間が経っているとその選択が出てこず、
強制的にサブドメイン型になります。

インストールを押して、
画面に表示される通りに
プラグインを一度全部オフにして
再度wp-config.phpを書き換えます。が、
—画面に表示される内容
define( ‘MULTISITE’, true );
define( ‘SUBDOMAIN_INSTALL’, true );
$base = ‘/’;
define( ‘DOMAIN_CURRENT_SITE’, ‘exsample.com’ );
define( ‘PATH_CURRENT_SITE’, ‘/’ );
define( ‘SITE_ID_CURRENT_SITE’, 1 );
define( ‘BLOG_ID_CURRENT_SITE’, 1 );

ここで
2行目のtrueをfalseに換えて書き換えます。
これでWORDPRESSがサブドメイン型ではなく
サブディレクトリ型の運用と勘違いしてくれます。

ここまでやった状態で再度WORDPRESSに
ログインし直すと.htaccessの書き換え指示のエリアに
表示される情報が変わるので、表示される通りに
.htaccessを書き換えましょう。
config

necobitの場合は

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]

となりました。

これを書き換えた時点でサブディレクトリ型の
マルチドメイン運用が出来ているはずです。

改めてWORDPRESSにログインすると、
左上にネットワーク管理者という表示があります。
ここから新しいサイトの追加が出来ます。

今の所不具合は起きていませんが、
何かあったら追記していきます。

落とし穴1-画像が表示されない-

uploadpath
サイトの設定でアップロードパスが指定されていると
アップロードされるパスとWORDPRESSが認識する
パスが違ってしまい、画像が表示されないというトラブルがありました。
アップロードパスを空欄にすると無事表示されました。
この辺りは.htaccessのRewriteの仕方に寄るものだと思いますが、
詳しい事はあまりわかりません。(詳しくないので)

落とし穴2-ログインできない-

もう一つはどのタイミングかは覚えていないのですが、
色々書き換えたりサイトを作ったりしていたら
WORDPRESSのダッシュボードにログインできなくなって
大変困りました。色々やった結果、ブラウザのキャッシュと
クッキーを削除したらログインできるというオチでした。

落とし穴3-DBがおかしな事に-

サブディレクトリに作ったサイトの
パスを変えたらなぜか記事や固定ページの
データーベースがメインサイトのものに置き換わってしまい
目の前が真っ暗になりました。
バックアップから復元して事なきを得ましたが、
本当にバックアップは大切です。
同じ事をもう一度やったら何故か今度はうまく出来ました。
きっと何か違う事をやったのだと思うのですが、
私は一体何やったんですかね?

あまり詳しくない人間が先人の知恵をたよりに
試行錯誤した結果なので、質問されても
答えられる知識は持ち合わせておりません。
あしからず。

投稿日:
カテゴリー:

作成者: necobit(ねこびっと)

音楽と電子工作でMIDI寄りものづくりをするユニット。MIDI制御基板の開発・販売、製品作例として自動演奏化楽器の展示・音とメカのパフォーマンスを行なっています。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください