サブサイト機能を独自ドメイン、サブドメインで使う
baserCMS4系からサブサイト機能が追加されていて、マルチサイトの構築が簡単になっているのですが、普通に設置すると、
- メインサイトURL https://example.com/ の場合
- サブサイトURL https://example.com/hogehoge/
- サブサイトURL https://example.com/fugafuga/
みたいに、サブフォルダのような感じになってしまいます。
しかし、実は独自ドメイン、サブドメインを割り当てることが実は可能です。
そしてそのやり方もQiitaに公開されています。
そんな上記のやり方で実際にやってみたところ上手くいかずにハマってしまったところがあったので、忘れないようにメモとして記録しておこうと思います。
独自ドメインにアクセスしてもアクセスできない?!
Qiitaの記事を見ると、
データベースの値を調整する
テスト段階という事で、UI がない為、追加したサブサイトのレコードを直接変更します。
phpMyAdmin 等のツールで、mysite_sites というテーブルを探し、対象レコードの以下のフィールドの値を変更します。
※ プレフィックスを変更している場合は、 mysite_ の部分を変更したプレフィックスに読み替えてください。use_subdomain : 1 に変更します
domain_type : 1 に変更します
別ドメインでのマルチサイト
基本的に、サブドメインでのマルチサイトと設定手順は同じです。
違う点は以下の2点です。エイリアスにドメイン丸ごとぶっこむ
domain_type を 2 に設定する
とあったので、mysite_sitesテーブルのuse_subdomain:1、domain_type: 2、alias: hogehoge.com という感じにしてみたところ、WebサーバにVirtualHostを設定してもメインサイトが表示されるままでした。
キャッシュかなとか色々繰り返しても変化なく。
諦めてソースコードを追ったりして調べると、mysite_sitesテーブルのaliasの値を元に、mysite_contentsテーブルのnameカラムやurlカラムも書き換えておく必要があることがわかりました。
じゃあいつ書き変わるのか?とさらに調べてみると、サブサイト設定画面の保存のタイミングで行われていました。
つまり、
エイリアスにドメイン丸ごとぶっこむ
というのは、管理画面のサブサイト設定画面のエイリアスの箇所に値を入れて保存するか、手作業でmysite_contentsテーブルの必要箇所も全て書き換える必要がある、ということでした(流石にこれはわからんでしょ!)
mysite_sitesの値だけ書き換えてできたーって思ってたら思わぬところでハマります、、、
mainDomainの設定値について
これもまた別の機会にあったハマりポイントの一つ。
Qiitaの手順にある、app/Config/install.php を書き換える箇所。
Configure::write('BcEnv.mainDomain', 'メインドメインとなる文字列');
の箇所です。該当記事内にもあるとおり
Configure::write('BcEnv.mainDomain', 'main.com');
のようにドメインだけ設定する必要があります。
他の設定項目が、
Configure::write('BcEnv.siteUrl', 'http://example.com/');
Configure::write('BcEnv.sslUrl', 'https://example.com/');
みたいに https://とかhttp://から記載されているので、
Configure::write('BcEnv.siteUrl', 'http://example.com/');
Configure::write('BcEnv.sslUrl', 'https://example.com/');
Configure::write('BcEnv.mainDomain', 'https://example.com/');
て感じでノリでhttps://とかつけて記載してしまうと、色々な箇所がおかしくなってしまいます。
(プレビューのURL表示部分などなど)
なんかおかしい!と思った時は設定値の見直しもしてみると良いかもです。
ブログ記事のURLが・・・
Qiitaの記事通りにやってみて、ひととおりうまく行った後に発生した現象。
ブログ記事の編集画面のURLがおかしくなってしまうようです。
これは完全にバグでしょうね。
この記事を書いている時点の4系最新版 baserCMS4.8.0でも治っていないようでした。
これは、ブログ記事 編集画面のソースコード( theme/admin-third/BlogPosts/admin/form.php )を見てみると原因がわかりました。
上記のURL生成部分が、サブドメインや独自ドメインを考慮していないがために発生しているようです。
ただ、同じソースコードの上部にて正しいURLを生成して$fullUrlという変数に入れている箇所があります。
なので、これをそのままURLを表示する部分にそのままセットすればOKでしょう。
何はともあれ
設定さえしっかりできれば一つの管理画面で複数サイト設置が手軽にできるマルチサイト機能は便利ですので活用したいですねー!
え?baserCMS4系の話ではなくて、baserCMS5系は?? さぁ…