WordPress をマルチサイト化する方法を解説
概要
WordPress をマルチサイト化する手順を解説します。
レンタルサーバーはシンレンタルサーバーを対象としていますが、エックスサーバーはもちろん、他社サーバーであっても概ね同じだと思います。
サブドメイン型を中心に解説していきます。
マルチサイトのメリット・デメリット
デメリット
- プラグイン管理が面倒と感じる場面も
- サイトが重くなる
- セキュリティーリスクが高まる
- プラグインがマルチサイト対応でないと使えない
メリット
- サイト管理が楽になる一面がある
- メモリーリソース軽減になる場合も
- サーバーのデイスクスペースを削減できる
- セキュリティーが高まる
詳細はこちら
マルチサイトは3タイプ
タイプ
- サブディレクトリ型
URLの形:お持ちのドメイン/〇〇◯
※開設後1ヶ月未満(回避策はあるようですが)のサイトのみ。
インストール難易度:低
- サブドメイン型
URLの形:〇〇◯.お持ちのドメイン
特に制限はないが、SSHで操作する必要がある。
インストール難易度:中
- 独立ドメイン型
URLの形:お持ちのドメインA、お持ちのドメインB
特に制限はないがサブドメイン型の手順+プラグインのインストール他
インストール難易度:高
サーバーの仕様により対応できない場合も
サーバーによって対応できない場合があるので、注意が必要です。事前に調べるかサポートに問い合わせておきましょう。
前準備
サブサイトの URL を登録
子サイトで使うURLをサーバーに登録して使用できるようにします。
WAF を OFF にする
WAF とは
”Web Application Firewall”の略で、簡単に言うと、Webサーバーで通信を解析し、攻撃と判断した場合その通信を遮断しWebサイトを保護するものです。
「Webアプリケーションの脆弱性」を悪用した攻撃からWebサイトを保護する目的のセキュリティ対策でので、特別な理由がない限り、通常は ON にしておくことをおすすめします。
WAF は一旦解除
シンレンタルサーバーでは、マルトサイト構築過程においてエラーを発生させる原因になるので、一時的に WAF をすべて OFF に設定します。
他のサーバーでもエラーの原因になるかもしれないのでインストールが済むまで一時的に解除しましょう。
ssh を使えるようにする
SSH とは Security Shell の略で、PCを遠隔操作するための通信規格の1つです。
SSHについてはサーバーによりけりなので、各サーバーのマニュアルを確認するか、サポートにお問い合わせください。
バックアップ
DB、wp-config.php、.htaccess は最低バックアップしてきましょう。
WordPress の準備
既存サイトの場合
プラグインをすべて停止(無効化)します。プラグインが何かしらの理由でマルチサイト化の弊害になることを避けるためです。必ず全てのプラグインを停止(無効化)してください。
新規サイトの場合
最近は「簡単インストール」などの名称で WordPress をインストールしてくれる場合が多く、インストール自体は初心者でも簡単にできると思われます。
また。プラグインのインストールは行わないでください。
今回は WordPress のインストールについては解説しません。
マルチサイト化の手順
wp-config.php を編集しアップロード
wp-config.phpの
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
のすぐ上辺りに
define('WP_ALLOW_MULTISITE', true);
の一行を加えます。
できたらアップロードします。
WordPress でマルチサイトの構築
ネットワークのインストール
WordPress の管理画面、左メニュー「ツール」の中に「サイトネットワークの設置」というのがあります。そこでネットワークを作ります。
エラーなど
※エラーが出る場合はWAFが関係している可能性があります。
※「サイトネットワークの設置」がない場合は
define('WP_ALLOW_MULTISITE', true);
にしていない可能性があります。
「サイトネットワーク名」「サイトネットワーク管理者のメールアドレス」は適当でOK(あとから変更可能)です。
設定が終わったら「インストール」をクリックします。
wp-config.php
画面に wp-config.php 用と .htaccess 用のコードが表示されます。
wp-config.php 用コードサンプル(実際に追加するのは表示されたコードをお使いください。)
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'あなたのドメイン');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
表示れたコードを先程追加した
define('WP_ALLOW_MULTISITE', true);
の直後に追加します。(実際に追加するのは表示されたコードをお使いください。)
.htaccess
.htaccess 用コードサンプル(実際に追加するのは表示されたコードをお使いください。)
<IfModule mod_rewrite.c>
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]
</IfModule>
これを
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
ここの太字部分に上書き(入れ替え)します。(実際に追加するのは表示されたコードをお使いください。)
SSHでシンボリックを作成
サブドメインを使用する場合シンボリックリンクというものが必要です。そのためにはSSHでの操作が必要です。また、SSHの操作には「Tera Term」というソフトがおすすめです。
シンレンタルサーバーではサブドメインの設定を行うと、トップドメイン/public_html 内にサイトURLのディレクトリができます。
このサイトURLのディレクトリを削除しておきます。削除しておかないとシンボリックリンクが正しく作られないので、必ず先にディレクトリを削除してからシンボリックリンクを作成してください。
シンレンタルサーバーでは以下の通り3回操作します。
cd /home/サーバーアカウント/あなたのドメイン/public_html
ln -s /home/サーバーアカウント/あなたのドメイン/public_html /home/サーバーアカウント/あなたのドメイン/public_html/新しく作るサイトURL
ll
これでシンボリックリンクは完成です。
新しいサイトの追加
サイト上部の「参加サイト」から「サイトネットワーク管理」に入り「サイト」を選択。
新しいサイトを追加してマルチサイト環境が完成です。
最後に OFF にした WAFを元に戻すことを忘れずに。