結構な時間を無駄にしたのでメモとして。Xserver(だけなのかわかりませんが)の仕様に起因する理由とは思わずかなりの数の情報を探し回りました…。
実現したいこと
- XserverでルートにWPをいれ、サブドメインでマルチサイトを設定
手順
- サーバー管理画面からサブドメイン追加
- 作成されたサブドメイン用ディレクトを削除かリネームして、シンボリックリンクを設定
- ルートのWPのwp-config.phpに記述追加しサブドメイン型を選ぶ
- .htaccessとwp-config.phpに記述追加
- 再ログイン
- 作成済みのサブドメインで子サイトのパスを設定して追加
上記の3以降は普通の手順で、基本的に検索で見つかる手順はここのことを差しています。
しかしXserverでは2が特に重要で、この点に気がつかず多くの時間を無駄にしました。
以下補足です。
手順1:サーバー管理画面からサブドメイン追加
子サイトのダッシュボードにアクセスした際に500エラーが表示される場合は、サーバー側でサブドメインの設定が出来てないの原因である可能性が高いです。
実際に安定してアクセスできるまでは時間がかかるので早めに設定しておく必要があります。サーバー管理画面のサブドメイン一覧の画面で「反映中」という文字が消えれば、おそらく準備完了と考えて良いと思います。
手順2:シンボリックリンクを設定
Xserver利用時で、子サイトのダッシュボードにアクセスした際に404エラーが表示される場合は、シンボリックリンクの設定がないからである可能性が高いです。詳細は以下の記事などを参照のこと。
- 【WordPressマルチサイト】温泉ブログを作ったよ!~エックスサーバーでのWordPressマルチサイト化手順 | Shirako’s Business Site
- エックスサーバーでサブドメイン型のワードプレスマルチサイトを設定する方法 | 銀行のギモン
大まかな手順は以下の通り。
- サーバー管理画面でサブドメインを設定した際に自動で作成されるサブドメイン用ディレクトリを消すかリネームする
- ターミナルなどでSSH接続する
- 該当のドメインのpublic_htmlディレクトリまで移動
- サブドメイン用ディレクトリを指定してシンボリックリンクを設定(en.example.comを設定したならen)
//cd でpublic_htmlディレクトリに移動 ここには本体となるWPがインストールされている前提
$ cd /home/サーバーID/あなたのドメイン/public_html
//ln -s でシンボリックリンク設定 記述の内容は以下のような書式
//ln -s 本体のパス polylangで指定したサブドメインのパス
$ ln -s /home/サーバID/あなたのドメイン/public_html /home/サーバID/あなたのドメイン/public_html/en
//ll で設定されたかどうかを確認。以下のような記述が表示がされるはず
//en -> /home/サーバID/あなたのドメイン/public_html
$ ll
手順4:.htaccessの書き換え
.htaccessは追加ではなく上書きです。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
WPがデフォルトで出力している上記を以下のように書き換えます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
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]
</IfModule>
なお、検索で500や404エラーの解決策を探すと.htaccessの記述変更を勧める記事が出てきますが、おそらくその記事は古い可能性があります。
現在はその記述自体が存在しないので、消すなどの変更を加える対象が存在しないためです。
結び
サブドメイン型でのマルチサイト化は本来の目的ではなかったのですが、別件の調査過程でうまく動かないことに気づきこの記事を書くに至りました。何度正規の手順を確認し、エラー解決のための情報を探し回ったことか…。
サーバーの仕様が原因とは考えていなかったので時間を食いましたがとりあえずすっきりしました。
その他参考情報
- WordPressのマルチサイトを解除する方法 | 新宿のホームページ制作会社 ITTI(イッティ)
- 【 ln 】コマンド――ファイルのハードリンクとシンボリックリンクを作る:Linux基本コマンドTips(16) – @IT
個人的補足
- マルチサイトの場合、子サイト用にWPはインストールする必要はない
- サブドメインは事前に用意しておく必要がある
- 404エラーが出たらサーバーの仕様を疑う(どのサーバーでもXserverと同様にシンボリックリンク作成が必要になるかも)
- Xservr以外ではさくらインターネットも同じようなので、シンボリックリンクを使うのが一般的?
2人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。