WordPressでマルチサイトを作る際と、リダイレクトループが起きた時の覚書
WordPressでマルチサイトを作る方法について、WordPress4.x系管理画面のスクリーンショットがなかった&リダイレクトループ対応が載っていなかったのでまとめてみました。
目次
参考にしたサイトがちょっと古かったので、WordPress4.0で実施したスクリーンショット+リダイレクトループについて補足してみました。
https://mage8.com/websitetips/multiple-blogs-on-wordpress.html
1:wp-config.phpを編集する
[php]
/** マルチサイト有効化 */
define (‘WP_ALLOW_MULTISITE’, true);
[/php]
管理画面に「ツール>ネットワークの設置」が追加されるので、アクセスしましょう。
2:ネットワーク名と管理者アドレスを設定する
「ネットワークの設置」では、ネットワーク名と管理者アドレスの入力を求められます。
ネットワーク名は管理画面に表示される名称に、管理者アドレスに指定されたアカウントは「特権管理者」に権限が設定されます。
3:ネットワークを有効化する
wp-config.phpや.htaccessを書き換える指示がでるので、指示に従って設定を行います。
wp-config再び
こんな感じのが出るのでwp-conig.phpに追加する。
[php]
define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, false);
define(‘DOMAIN_CURRENT_SITE’, ‘multi-wordpress.example.com’);
define(‘PATH_CURRENT_SITE’, ‘/blog/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);
[/php]
.htaccessも
[php]
RewriteEngine On
RewriteBase /blog/
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).*) var/www/html/multi-wordpress/httpdocs/blog/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ var/www/html/multi-wordpress/httpdocs/blog/$2 [L]
[/php]
ログインしなおす
有効化と設定を実施するために、再度ログインし直します。
「ログイン」というリンクがあるので、クリックしましょう。
4:サイトネットワーク管理ページに移る
設定に成功すれば管理画面に「管理サイト」という項目が現れます。
「新規サイトを作成」から子サイトの作成が行えるようになります。
5:新規サイトを作る
子サイトのアドレス・サイト名・管理者アドレスを入力してサイトを作成します。
サイトURLはhttps://example.com/blog/[サブディレクトリ]/という形になります。
「サイトを追加」ボタンを押せばこれでサブサイトが完成です。
HOTFIX:.htaccessを編集する
さぁサブサイトの設定を始めよう・・・と思った矢先、サーバーによってはこうなります。
WordPressなどのOSSの良い所は、困ったときに頼れるフォーラムがあること。
検索するとすぐに解決策が出てきました。
WordPress側で自動生成される.htaccessのコードをそのまま使いましたが、そこに問題があったようです。リダイレクトの部分に、ヘテムルのサーバルートからのディレクトリ構成が挿入されていました。
WordPress › フォーラム » WordPress3.5のマルチサイトで子サイトのダッシュボードにアクセスできない
ということなので、.htaccessをこう修正します。
[php]
RewriteEngine On
RewriteBase /blog/
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]
[/php]
下から2行目・3行目、「$2」の前にあったディレクトリ構造を全て削除しています。
余談:wp-configは書き換えOKなのか?
WordPressアップデートで中身が上書きされる系のファイルを触るのは色々とよろしくないのです。
今回触ったwp-config.phpはアップデートでインストールされるファイルの中に存在しないファイルですので、アップデートしても上書きされないのです。
WordPressには元々wp-config.phpは存在しません。
wp-config-sample.phpをwp-config.phpにリネームして使います。
だからアップデートでwp-config.phpは上書きされません。
上書きされるのはwp-config-sample.phpとその他です。
WordPress › フォーラム » wp-config.php
なんでマルチサイトにしたらWordPressがアップデートできない!なんてことは無いのでご安心下さい。
それ以外のファイルを触った場合は・・・まぁ頑張って直して下さい。
と、ここまで書いて「じゃあ.htaccessはどうなんだ?」って疑問が湧いたんですが、こっちも大丈夫なんですかね?
ちょっとこちらについては時間ができ次第調べてみたいと思います。