かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

WordPress さくらサーバーでマルチサイトにしたらリダイレクトループでサブサイトの管理画面にログインできなかった件

WordPressのマルチサイトを作成する案件があって、さくらのレンタルサーバーWordPressをインストールしてマルチサイトの設定を行いました。
メインサイトのトップを/にして、ディレクトリ型でマルチサイトをインストールしたまでは良かったのですが、サブサイトを作成してサブサイトの管理画面にアクセスしようとするとリダイレクトループが発生し管理画面にアクセスできない状況にハマってしまいました。(サブサイトそのものはリダイレクトループが発生すること無く表示されていました...

サイト構成

/site-root <- サイトのルートのディレクトリ
  |- .htaccess
  |- index.php
  |- /wordpress  <- WordPress本体
        |- wp-config.php

ネットワーク有効化の際に出力される .htpaccess に記入するコードに問題があった

さくらのレンタルサーバーでマルチサイトのネットワークを有効した時に表示されるRewriteRuleに不要なパスが出力されてしまっていてるのがリダイレクトループになってしまう原因のようでした。

ネットワークの有効化の際に表示される.htaccessの設定👇

2.次の内容を /home/user/www/ にある .htaccess ファイルへ追加して、他の WordPress ルールを置き換えてください:

RewriteEngine On
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).*) site-root/wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ site-root/wordpress/$2 [L]
RewriteRule . index.php [L]

よく見ると、/www 直下の.htaccessに記入するようにと書かれています。
ドメイン/site-rootディレクトリに指定している場合はWordPress.htaccess/site-root直下にあるので、出力される設定ではパスが異なってしまうのが原因のようです!

RewriteRule のパスを修正する

下から2つ目と3つ目の設定

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) site-root/wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ site-root/wordpress/$2 [L]

ここにあるパスを.htaccessのあるドメイン指定してある/site-rootからみてのWordPress本体があるパスに修正します。

このケースではWordPress本体は/site-rootからみるとwordpressディレクトリになるので次のように修正します。

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ wordpress/$2 [L]

 
仮に/site-rootに直接WordPressのコアファイルが置かれている場合は次のような感じです。

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]

 

マルチサイトを作ったのは初めてで、注意書きを見をとしてしまっていたためにパスの違いに気づかずハマってしまいました。
サブサイトのそのものが閲覧できていたので余計に、ナゼ管理画面だけリダイレクトループになるんだ!? と盛大にハマりました。

今日のアイカツ格言
「注意書きはちゃんと読もう!」
f:id:kikiki-kiki:20180201075055p:plain


ローリーとふしぎな国の物語 ~プログラミングとアルゴリズムにふれる旅~

ローリーとふしぎな国の物語 ~プログラミングとアルゴリズムにふれる旅~