SOY CMSのユーザから下記のような質問がありました。

SOY CMSでサイトを作る時、サイトIDをhogeにして、https://example.com/hogeのようなURLのサイトを作成するが、https://example.com/hoge/huga のようにもう一つ下の階層のサイトを作成することはできませんか?


今回の記事では上記の質問に対応した時の内容を残しておく。

SOY CMSをインストールするディレクトリは /var/www/html にして話を進める。

ドメインは、example.com


最初にサイトを作成する。

この時のサイトIDは hoge か huga にしておく。

今回は hoge で作成した。


ディレクトリ構造は

$ tree -a /var/www/html/hoge
hoge
├── .cache
├── .db
├── .entry_template
├── .htaccess
├── .plugin
├── .template
├── css
├── files
├── im.php
├── image
├── index.php
└── js

このようになる。

hogeディレクトリと各ディレクトリやファイルの間にhugaを設け、


$ tree -a /var/www/html/hoge
hoge
└── huga
            ├── .cache
            ├── .db
            ├── .entry_template
            ├── .htaccess
            ├── .plugin
            ├── .template
            ├── css
            ├── files
            ├── im.php
            ├── image
            ├── index.php
            └── js

のようにする。




次にSiteテーブルがあるデータベースを開く。

SQLite版であれば、/var/www/html/CMSインストールディレクトリ/common/db/cms.db

MySQLはご自身で作成されたデータベース


Siteテーブルのurlとpathの値を下記のように変更する。

※SETに入れる値は各自の環境に合わせて適宜変更してください

mysql> UPDATE Site SET url = 'http://example.com/hoge/huga/' WHERE site_id = 'hoge';
mysql> UPDATE Site SET path = '/var/www/html/hoge/huga/' WHERE site_id = 'hoge';

※どちらのカラムの変更も末尾に増やしたディレクトリ名 + /を追加している




最後に/var/www/html/hoge/huga/.htaccessを変更する。

RewriteEngine on
RewriteBase /hoge

RewriteEngine on
RewriteBase /hoge/huga



すでに稼働していたサイトを今回の手順でサイトURLを変更する場合は、今回の手順に従って変更した後、SOY CMSの管理画面で下記の操作を行う必要がある。


soycms_sub_dir_site


ようこそSOY CMSへの画面(管理画面にログイン直後のサイト一覧が表示されているページ)でサイト一覧を開き、


soycms_sub_dir_site_1


対象となるサイトの詳細を開く。


soycms_sub_dir_site_2


サイトURLの入力内容が意図通りであっても、変更ボタンを押す。

これで、サイト側のデータベースに登録されているサイトURLを入力されている内容に変更することができる。


これで手続きは終了。

不足している内容があり次第、当記事は更新します。