WordPressでマルチサイトを作る際と、リダイレクトループが起きた時の覚書

参考にしたサイトがちょっと古かったので、WordPress4.0で実施したスクリーンショット+リダイレクトループについて補足してみました。
http://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を書き換える指示がでるので、指示に従って設定を行います。

スクリーンショット_112114_015940_PM

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:サイトネットワーク管理ページに移る

設定に成功すれば管理画面に「管理サイト」という項目が現れます。

無題クリップ_112114_020521_PM

「新規サイトを作成」から子サイトの作成が行えるようになります。

5:新規サイトを作る

子サイトのアドレス・サイト名・管理者アドレスを入力してサイトを作成します。

スクリーンショット_112114_020627_PM

サイトURLはhttp://example.com/blog/[サブディレクトリ]/という形になります。

「サイトを追加」ボタンを押せばこれでサブサイトが完成です。

HOTFIX:.htaccessを編集する

さぁサブサイトの設定を始めよう・・・と思った矢先、サーバーによってはこうなります。

スクリーンショット_112114_020848_PM

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」の前にあったディレクトリ構造を全て削除しています。

スクリーンショット_112114_021259_PM
これでログインできました。

余談: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はどうなんだ?」って疑問が湧いたんですが、こっちも大丈夫なんですかね?

ちょっとこちらについては時間ができ次第調べてみたいと思います。

Follow me!

WordPressでマルチサイトを作る際と、リダイレクトループが起きた時の覚書” に対して 3 件のコメントがあります

  1. 橋本 より:

    マルチサイトのやり方を参考にさせていただき行ったのですが、ログインし直すところで予期せぬエラーとなってできなくなってしまいました。同じやり方をしてるのでなんでログインできないのか全くわかりません。

  2. 橋本 より:

    .htaccessのところが置き換えとなっていましたので既存のものと置き換えたのがダメなのでしょうか?
    既存のものの下に追加すればよかったのでしょうか?

  3. 岡本 秀高 より:

    ログインし直すところで「予期せぬエラー」ということは、.htaccessの設定が間違っている可能性が非常に高いです。
    記事内に掲載している.htaccessはあくまでサンプルですので、ご利用になられているWordPressの管理画面で提示された.htaccessの内容を記述するようにしてみてください。

    それでも解決しない場合は他の原因を探る必要がありますので、一度WordPressのサポートフォーラムにご相談ください。