ルートディレクトリ(/)は非Wordpressの環境で、サブディレクトリ型マルチサイト(/test1,/test2)を作る方法。
なにこれ?
http://www.example.com/は静的なページや他のシステム等が入っておりWordpressは入れられない状態で、http://www.example.com/test1, http://www.example.com/test2, http://www.example.com/test3等をwordpressのマルチサイト機能で作る方法。
なんとなく簡単にできそうなのですがWordPressのマルチサイトはindex.phpが受けてから良い感じにしているので、できそうでできないのです。
結論
現在のところWordpressの標準機能ではできません。
- http://www.example.com/multisite/
- http://www.example.com/multisite/test1
- http://www.example.com/multisite/test2
- http://www.example.com/multisite/test3
をマルチサイト機能で作ってからwebサーバの機能で、
- http://www.example.com/test1 → http://www.example.com/multisite/test1
- http://www.example.com/test2 → http://www.example.com/multisite/test2
- http://www.example.com/test3 → http://www.example.com/multisite/test3
な感じでリライトします。
※WordPress 4.4.1ではパーマリンク設定も含め正常に動いていますが、将来的にどうなるかは分かりません。設定変更は自己責任で。
他の方法
一番何も考えないで良い方法は、/test1,/test2それぞれにWordPressを入れDBのprefixを違うものにし構築する方法。安全です。ただし設定、プラグインのインストール、アップデート等を含め、手間がサイト分必要となりますので、2、3サイトくらいなら頑張れますが、それより多いと運用の手間が大変です。
マルチサイト機能を使えばそのへんは一括して運用が可能なので管理が楽です。
構築手順
- サブディレクトリ型マルチサイトを構築する→正常に動かす。
- ユーザからアクセスさせたい位置にディレクトリを作りリライトの.htaccessを設置。
- DBの設定変更、クッキー関連の設定変更。
サブディレクトリ型マルチサイトを構築する
一旦目的としている”ディレクトリ外”にサブディレクトリ型マルチサイトを構築します。(若干の手間はかかりますが)WordPress標準の機能なので、新規で作成する場合はさほどハードルは高くないと思われます。
下記の「メイン」にもサイト(ブログ)を作ることができますが、後述の設定の関係でメインは触らずサブのみを使ってサイトを作ったほうが良いです。
- http://www.example.com/multisite/(メイン)
- http://www.example.com/multisite/test1(サブ)
- http://www.example.com/multisite/test2(サブ)
- http://www.example.com/multisite/test3(サブ)
- ネットワークの作成 / WordPress Codex (サブディレクトリ型マルチサイトの構築)
https://wpdocs.osdn.jp/Create_A_Network
既にサイトを構築済み/運営中の方は若干面倒ですが、なんとかしてサブディレクトリ型マルチサイトの状態まで持って行きます。DBの書き換え等で上手く行けばラッキーですが、最悪記事をエクスポート→新しい環境へインポートすれば引っ越しは可能かと思われます。
- WordPress の引越し / WordPress Codex
https://wpdocs.osdn.jp/WordPress_%E3%81%AE%E5%BC%95%E8%B6%8A%E3%81%97
※各マルチサイトで管理ツール等に正常にログインでき、投稿等が上手く動くことを確認します。
アクセスさせたい位置にディレクトリを作りリライト
http://www.example.com/は既に他の静的なページやシステムが動いていると仮定します。
下記URLで静的なファイルがアクセスできるようにディレクトリを作成し、念のためhtmlファイル等を置き問題なくアクセスできることを確認します。ルートディレクトリ(/)のリライト等の設定の影響でtest1,test2,test3に正常にアクセス出来ない場合は下記ディレクトリは除外するような設定を行います。
- http://www.example.com/test1
- http://www.example.com/test2
- http://www.example.com/test3
test1,test2,test3に下記.htaccessを置きます(apacheの場合。nginx等は同じ意味合いの設定をします)。
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(index\.php)$ /multisite/$1 RewriteRule ^(.*)$ /multisite/$1
DBの設定変更
現在の状態ではhttp://www.example.com/test1へアクセスしてもデータベース内で/multisite/test1の情報が残っているため正常に表示されません。
- http://www.example.com/multisite/wp-adminでログインし、参加サイト→サイトネットワーク管理者→サイト→全てのサイト→http://www.example.com/multisite/test1の編集を選択。
- サイト URL、設定→Siteurl,Homeをhttp://www.example.com/test1へ書き換え保存。
既に運用中のサイトの場合はデータベースをエクスポートして/multisite/test1となっている部分を/test1に書き換え、インポートする必要があります。
- http://www.example.com/test1が正常に表示されることを確認します(test2,test3も同様に変更します)。
ただ、現在の状態では、http://www.example.com/test1/wp-adminでユーザ名、パスワードを入れてもログインできません。
クッキー関連の設定変更
そのサイト宛のcookieを削除した後、下記をwp-config.phpに記述します。
define('ADMIN_COOKIE_PATH', '/'); define('COOKIE_DOMAIN', 'www.example.com'); define('COOKIEPATH', '/'); define('SITECOOKIEPATH', '/');
http://www.example.com/test1/wp-admin、http://www.example.com/multisite/wp-admin等で管理ツールにログインできることを確認します。
参考にしたサイト
- WordPress multisite in subdirectory, not root, and remove base folder from url
http://wordpress.stackexchange.com/questions/137103/wordpress-multisite-in-subdirectory-not-root-and-remove-base-folder-from-url
結論
運用中のサイトの場合は色々と面倒です。せめてCodexに書かれるくらいな状態なら安心して使えるのですが、どこかに罠があるのかもしれません… このcookieの設定まずいのでは?等ありましたら教えて下さい。
コメント
[…] もやし工房 様 […]