WordPress マルチサイト化に関するメモ

WordPress、サブディレクトリ型のマルチサイト化に挑戦してみた。ネットで検索するとたくさん出てくる標準的な手順に従ってやってみたが、いくつかつまづいた点があった。

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

まずサブディレクトリ型とサブドメイン型を選択する画面が出てこず、勝手にサブドメイン型にされてしまって困ったが、これはwp-config.phpに書き込む「define(‘SUBDOMAIN_INSTALL’, true);」falseにすることで難なく解決した。

/* マルチサイト有効化 */
define(‘WP_ALLOW_MULTISITE’, true);
define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, false); ➔サブドメイン型にする場合はtrueにする
define(‘DOMAIN_CURRENT_SITE’, ‘oo.geo.jp’);
define(‘PATH_CURRENT_SITE’, ‘/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);

あと作った子サイトの管理画面に入ろうとするとリダイレクトループが起きて何も表示されずログインできない件、これは.htaccessの書き方が悪かった。「サイトネットワークを有効化中」のところで表示されるコードを追記するのでなく、すべて上書きすることで解決した。

元の.htaccessのコード

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

↓書き換えた.htaccessのコード

<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 ^([_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]
</IfModule>

あと子サイトのダッシュボードは表示されるのに、肝心のサイトが403 Forbiddenになって何も表示されない件、これは同じ名前のディレクトリを先に作っていたことが原因だった。当該フォルダを削除して解決。