WordPress にはマルチサイト機能というのがあるので試してみた。1つの WordPress で複数の Web サイトを運用する事ができるので、Web サイトを量産するのに便利だろうと思う。
WordPress のマルチサイト機能には「サブディレクトリ」「サブドメイン」「複数ドメイン」の三種類から選ぶ事ができる。複数ドメインを契約するのはだるいので「サブドメイン」を使うことにした。設定を適切に行えば WordPress 上から無限に Web サイトを生成できるようになる。
DNS の設定
以下のような感じにサブドメイン欄に * を入れた A レコードを追加すると、サブドメインに何を入力してもサーバへアクセスできるようになる。
ムームードメイン以外でも大体同じような感じだろうと思う。
Apache の設定
自分はサーバに Apache を利用しているので以下のような感じにバーチャルホストの設定を行った。こうする事で example.com のサブドメインを全て同じディレクトリで受けられるようになる。
$ sudo vim /etc/apache2/apache2.conf
NameVirtualHost *:80
$
$ sudo vim /etc/apache2/sites-available/001-example.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com *.example.com
DocumentRoot /home/user/public_html/example.com/
<Directory /home/user/public_html/example.com>
AllowOverride all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
$
$ sudo a2ensite
Your choices are: 000-default 001-example default-ssl
Which site(s) do you want to enable (wildcards ok)?
001-example.conf
$
$ sudo service apache2 restart
肝は ServerAlias だろう。DocumentRoot 等は適当に環境に合わせて欲しい。
すでに 000-default という設定ファイルがあったが同じところにイロイロ突っ込むのはちょっとアレなので 001-example に分けた。
WordPress の設置
DNS と Apache の設定が終わったら WordPress を設置する。といってもインストール自体は上記の Apache の設定通りに WordPress のファイルを設置するだけで良い。
wp-cli を利用しているのであれば /home/user/public_html/example.com で wp core download などとすれば良い。
設置したらデータベース等の設定を行い、管理画面へアクセスできる状態にしておく。
WordPress をマルチサイト化する設定
WordPress へログインできる状態まで行ったなら wp-config.php に以下の一文を追加する。
define('WP_ALLOW_MULTISITE', true);
「編集が必要なのはここまでです」の前ならどこでもいいみたいだがとりあえず直前の行に書いた。
この状態で WordPress へアクセスすると「ツール」の欄に「ネットワークの設定」という項目が新たに追加される。
ネットワークの設定を開くと以下のような画面が表示される。
実際に設定したサイトのスクリーンショットを撮り忘れた為に適当な WordPress でネットワークの作成を行おうとしたら、「新規インストールではないため、(略)サブドメインを使用する必要があります。」と表示された。新規インストールであれば「サブドメイン」と「サブディレクトリ」の二種類から選ぶ事ができる。
「インストール」ボタンを押したら以下のような画面が表示される。
これもスクリーンショットを撮り忘れた為若干違う表記だが書いてある内容は同じだ。この記述の通りに wp-config.php 及び .htaccess に記述を行っていく。
wp-config.php の「編集が必要なのはここまでです」の行の上に以下の内容を追加する。
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
次に .htaccess に以下の内容を追加する。
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
設定できたら WordPress にログインし直そう。これでサイトを追加できるようになっているはずだ。
コメント