WPサイトの案件でマルチサイトで英語版ページを作って欲しいというのがあったので、ご要望通りにマルチサイト化の設定をしたわけなんですがな。
ただ、WPのトップページが既にサブディレクトリの状態でサブディレクトリ形式のマルチサイト設定をしたら管理画面へのログインがちょっとおかしいことになったのでその対処法をメモメモ。
件のURL構成はこんな感じです↓
ドメインのトップページ(hogehoge.com)には既に別ページが乗っかっており、「hogehoge.com/blog/」というサブディレクトリ上でWordpressを表示していたわけです。
この状態で「hogehoge.com/blog/english/」というURLにマルチサイトで別ブログを表示する設定を通常のやり方でやってみました。
普通に成功しました。
と思いきや、英語版の管理画面URL「hogehoge.com/blog/english/wp-admin」にアクセスしても”404 not found”・・・・。
といろいろと試行錯誤したところ .htaccessを編集したら無事に解決。
マルチサイトの設定(項目名で言うと”ネットワークの設置”)の時に出てくる.htaccessの内容を
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).*) ******/*****/***/**/*/*/*********/*/*/*********/hogehoge.com/blog/wordpress-4.0-ja-jetpack-undernavicontrol/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ ******/*****/***/**/*/*/*********/*/*/*********/hogehoge.com/blog/wordpress-4.0-ja-jetpack-undernavicontrol/$2 [L]
RewriteRule . index.php [L]
から
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).*) wp/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ wp/$2 [L]
RewriteRule . index.php [L]
に変更しただけです。
そもそも”wordpress-4.0-ja-jetpack-undernavicontrol”という謎URL指定は何なんですかね?
jetpackは別にマルチサイトに関係無いと思うんですがねー。