WordPress

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を書き換える指示がでるので、指示に従って設定を行います。

スクリーンショット_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はhttps://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はどうなんだ?」って疑問が湧いたんですが、こっちも大丈夫なんですかね?

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

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts