【条件】

サーバはsakuraインターネット。ドメインはsakura以外で取得。

mainsite.jp(あくまで例のドメイン。メインというかルートに真っ先に設定する)
subsite.jp(あくまで例のドメイン。二つ目のサイト)

をwordpressでマルチドメインで使用したい。

———————————————————————–

いろいろと読んでましたが、ここのページが一番わかりやすかったです。

実は可能だった、さくらサーバでのサブドメイン(マルチドメイン)型WordPressマルチサイト化。

ですすめていたら「ワイルドカード DNS が正しく設定されていない可能性があります。」という警告。
とりあえず無視して進めてよいというような記事があるので、とりあえず進めてみたら、いけました。

あと、ネットワーク管理者のダッシュボードから、新しいサイトを追加するときに、上記の記事では「ディレクトリを入れる形式になっている」とありましたが、実際にはサブドメインを入れる形式になっていたのでそこがちょっと違うかもです。

そして、このサブドメインを入れる形式が、ものすごーく長い1行のテキスト記入エリアの下に「.mainsite.jp」となっていて、意味の分からない私は「.mainsite.jp」はサンプル回答なのだと思い、「example.mainsite.jp」でとりあえず設定したかったので、1行のテキスト記入エリアに「example.mainsite.jp」と入れました。

すると、サイトのアドレスが認識できないみたいなエラーではじかれました。

実際はその1行のテキストエリアには「example」だけ入れたらよくて、その記入エリアの下の「.mainsite.jp」と合わせて「example.mainsite.jp」と読めるようになってたらよかったんですねー。親切過ぎて間違えた。(ってことは、前日に他の環境で散々失敗したのも、それが原因だったか)

あと、私が勘違いしていたこととして、sakuraインターネットのマルチドメインは、
wwwにmainsite.jp、www/subsite/というフォルダにsubsite.jpを当てるというやり方だったため、なんとなくそういう設定なのかなと思っていたこと。

しかし、wordpressはwwwに置いたwordpressファイルで展開するのだから、メインとなるドメインも二つ目のサイトも同じwwwのファイルがあてられる。

つまり、index.phpに接続したのが、mainsite.jpでかsubsite.jpでかで、siteid:1で展開するか、siteid:2で展開するかの問題なのだと思う。

実際にフォルダがあるというイメージが付きまとっていたので、なんだかよくわからなくなってしまった・・・

さて、その記事に忠実に設定を行っていれば、マルチサイト化は出来ます。

ここからは、私の設定したいサイト固有の話。

1.index.htmlとindex.phpを共存させたい。
2.subsite.jpがwww付でアクセスされた場合の対応。

1.index.htmlとindex.phpを共存させたい。

たとえば、

mainsite.jp(メインで使っている)
subsite.jp(二つ目のサイト)

なんですけど、mainsite.jpは既に作成されていて、index.htmlが鎮座しております。
ゆくゆくは全てwordpressで管理したいけど、ひとまず今回はsubsite.jpを先にwordpressで使いたい。
なので、mainsite.jpはindex.htmlのままにしたい。けど、wordpressでは/にリダイレクトされちゃって、そのときにindex.htmlが優先設定されているからプログラムがうまく動かない~。と思っていたら、そのリダイレクトを切ることで共存させることができるんですね。

WordPressでindex.phpとindex.htmlを共存させる

2.subsite.jpがwww付でアクセスされた場合の対応。

sakuraのドメインの設定時点で、

「wwwを付与せずマルチドメインとして使用する(上級者向け)」を選択するようにと書いてあったのでその設定にしましたが、www付でアクセスするお客様は必ずいる……。
wwwを付けた場合も対応がしたいなと思いました。

つまり、www.subsite.jp でアクセスされたら subsite.jpでアクセスした状態にする。

試したいこと

・sakuraのドメインの設定で、マルチドメインとして使用するにしたらどうなるだろう?
これ、問題なく設定できました。www.subsite.jpでもsubsite.jpでもアクセスできました。www.subsite.jpでアクセスすると、subsite.jpにリダイレクトされます。
じゃあ、なんで「wwwを付与せずマルチドメインとして使用する(上級者向け)」を選択するように言われたのかというと、そのsubsite.jpでサブドメイン(例えばaaa.subsite.jp)を設定するなどをしたい場合のことを考えてではないかという意見をいただきました。サブドメインを使うことはないと思うので(状況的にディレクトリになるだろう)、この設定で進めたいと思います。

3.subsite.jpが「http://subsite.jp/index.html」でアクセスされたとき、http://subsite.jp/index.phpに飛ばしたい。

つまりは、上記までの条件だと、http://subsite.jp/index.phpでアクセスされたときは、wordpressのページが見れるけど、index.htmとかURLだけでアクセスされたときはhttp://mainsite.jpのindex.htmlが表示されていまうのです。
これを、wordpress画面でやっちゃいたい。

とりあえず、mod_rewriteで考えてみるよ。

[.htaccess] 条件に該当するURLを書き換える [mod_rewrite]

↓わかりやすかった。

.htaccessによるリダイレクト徹底解説

となるとー。wordpressのリダイレクトもかかわってくるってことですよね。

このRewriteの条件、RewriteCondは複数の条件も使えるみたいだけど、複数の条件の書き方ってどうなるんだろう?

RewriteCond – RewriteRuleの条件を設定

.htaccessで正規表現を使用する

サルにもわかる正規表現入門

と考えつつ、下記のようにした

[code]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subsite.jp[OR]
RewriteCond %{HTTP_HOST} ^www.subsite.jp[NC]
RewriteRule ^index\.html$ index.php [L]
[/code]

そのとき、http://subsite.jp/index.htmlでアクセスした場合は、wordpressのindex.phpがindex.htmlという部分を変数として処理して、そんなページないよという表示を出してくる。
確かに。しかし、ここでindex.htmlとかでアクセスされたら/にリダイレクトすればーなんて思うと、mainsite.jpのための設定(index.phpとindex.htmlを共存)を無視することになるので、我慢です……。

と、考えつつ……もしかして、ルート上のindex.htmlの処理でなんとかならないだろうか? URLを取得したときに、subsite.jpだった場合は、subsite.jp/に飛ばすというような。

4.もう1ドメインを取得して、subsite.jpと同じところに飛ばしたいという場合

WordPress MU Domain Mappingプラグインによるドメイン設定で、subsite.jpと同じサイトIDで設定してやればいいのだけども、結局subsite.jpに飛ばされるようになります。

 

あとはプラグインが動くかを確かめる

マルチサイトには向いていないプラグインがあるとのことだったので、使用したいプラグインが動くかどうかを試すことにしました。
ネットワーク管理でインストール(新規インストールはネットワーク管理でしかできない)

試したプラグインは以下。
全てネットワークで有効化すると、サイトすべてで有効化される。ただし、ネットワークで有効化すると無効化もネットワークでする必要があり、全てのサイトが対象となる。
サイトそれぞれで個別に有効化することも可能。設定はサイトそれぞれになる。

Types
コンテンツはサイト間で共有はできない。Aサイトで作ったカスタムフィールドが、Bサイトに表示されることはない。

contactform7
フォームはそれぞれのサイトで作ったコンタクトフォームがそれぞれのサイトで管理できる。
Aサイトで作ったフォームが(ショートコードが)は、Aサイトのみ有効で、Bサイトに埋め込むと、Notfoundと表示される。
Aサイト、Bサイトともにメール送信テスト完了。

・tinymce-advanced

・search-everything

テストのためにTypesにもデータを入れてみる。→AサイトBサイトとも設定どおりに検索できた。

・taxonomy-terms-order

動作を確認した

・welcart

サイト個別でプラグイン有効化をすること。動作を確認した。AサイトとBサイトで商品を共有とかは難しそう。
マルチサイト化に関しては、公式サイトでの記事がありました。マルチサイト機能の検証
マルチサイトがどとか関係なく、意外だったのは、てっきりタクソノミーとか利用していると思ったら、普通にデフォルトのカテゴリーに「商品」などのカテゴリーを作るんですね。プラグインを停止しても、記事を削除しないと機能は残ります。

とりあえず、やりたいサイト構図は出来そう。データの共有なんかも簡単にできたらよいのになぁと思ったり。サイトネットワーク管理者で登録したものは、どちらのサイトでも共通に取り扱えるとか……。