マニュアル目次 > 設定画面

静的ファイル同期

メニュー:静的HTMLジェネレーター > 設定 > 静的ファイル同期

このセクションで決めること

HTMLの生成とは別に、画像・CSS・JavaScript などのファイルを公開先へ運ぶ設定です。

HTMLはCMSにアクセスして取得しますが、これらのファイルはサーバー上のファイルをそのままコピーします。仕組みが違うので設定も分かれています。

同期される対象

項目内容
静的ファイル同期の有効/無効初期値: 有効 有効にすると、次の2つが自動的に対象になります(個別のオン・オフはありません)。
  • アップローダーのファイル(webroot/files/
  • 現在のテーマの webroot(css・js・img など)
手動同期パターン 上の2つに当てはまらない、公開ディレクトリ(webroot)へ手で置いたファイルを同期したいときに使います。1行1パターンで、webroot からのパスを指定します。
公開先での置き場所は webroot と同じ形になります(/pdf/a.pdf は公開先の /pdf/a.pdf)。
除外パターン 公開サイトへ持って行きたくないファイルを1行1パターンで指定します。書き出し先の中でのパス(例 files/uploads/2026/01/photo.jpgテーマ名/css/style.css)に対して照合します。手動同期パターンにも共通で効きます(除外が優先されます)。

除外パターンに必ず入れておくもの

静的サイトではPHPは動きません。運んでも中身がそのまま読まれるだけです。次の指定は初期値に入っていますが、すでに使っている環境では初期値が適用されません。設定画面の「除外パターン」の下に同じものを表示しているので、足りない場合は追記してください(保存時にも「◯件足りません」と警告が出ます)。

**/tmp/**
**/cache/**
**/*.php
**/.env
**/.env.*
**/.git/**
**/*.log
**/composer.json
**/composer.lock
**/*.key
**/*.pem
**/id_rsa*
**/id_ed25519*
特に「外部フォルダの同期」でCMSの中を指定している場合は必ず入れてください。 .envconfig の中にはデータベースのパスワードが書かれています。これらが公開サイトに出ると、誰でも読める状態になります。 SSHの秘密鍵(*.keyid_rsa など)も同様です。そもそもCMSのディレクトリの中に置かないでください。
.htaccess は除外に入れていません。公開サーバー用の .htaccess を意図的に運ぶ使い方があるためです(下の「リネームマッピング」を参照)。

手動同期パターンの例

/pdf/**              … webroot/pdf/ の中身すべて
/favicon.ico         … このファイルだけ
/assets/css/*.css    … このフォルダ直下のCSSだけ

アップローダーのファイル(webroot/files/)は手動同期パターンでは扱いません。公開期間限定ファイルの判定をすり抜けてしまうため、上の仕組みでのみ同期します。

/** のように webroot 全体を対象にすると遅くなります。実行のたびに全ファイルを走査するためです。フォルダを絞ってください。

外部フォルダの同期

CMSの外にあるファイルを、サーバーの絶対パスで指定して公開サイトへ持って行きます。別のシステムが出力するPDF置き場など、baserCMS が管理していない静的ファイルをフォルダ単位で同期できます。

「同期元」「置き場所」の2つの欄に分けて入力します(「行を追加」で何組でも登録できます)。

同期元(サーバーの絶対パス)置き場所結果
/home/example/shared/pdfpdfそのフォルダの中身が公開サイトの /pdf/ 以下に並びます(下の階層も含めて、フォルダ構成そのまま)
/home/example/shared/*.html(空)そのフォルダ直下のHTMLだけが、公開サイトの直下に並びます
/home/example/shared/annai.pdfpdfそのファイル1本だけが /pdf/annai.pdf になります
フォルダのパスをそのまま書けば、その中身すべてが対象です(末尾の / は付けても付けなくても同じです)。一部だけを選びたいときは「*」(1階層ぶん=すぐ下の要素だけ)と「**」(その下の階層すべて)が使えます。書き方はパターンの書き方と同じです。置き場所を空にすると公開先の直下に置きます。
同期元に一致するファイルが1件も無かったときは、ログに警告が残ります。運ばれていないと思ったらログを確認してください。

指定したフォルダの中身は、そのまま公開サイトに出ます。公開してよいファイルだけが入っているフォルダを指定してください。

CMS本体のディレクトリ(vendor/ やテーマの中など)も指定できます。テーマが持っている素材を運びたい場合に使えますが、指定の仕方によっては設定ファイル・ログ・PHPソースまで公開されます。自己責任でご利用ください。フォルダをできるだけ絞り、上の「除外パターンに必ず入れておくもの」を必ず設定してください。指定するとログに警告が残り、足りない除外パターンを名指しで知らせます。

次は指定できません(実行時に拒否してログに残します)。
・書き出し先・公開先そのもの(自分の出力を読み込んで無限に増えるため)
/etc のような浅すぎるフォルダ(2階層以上を指定してください)

上の「除外パターン」と下の「リネームマッピング」は、ここで運ぶファイルにも同じように効きます。

リネームマッピング

公開サイトへ持って行くときに、ファイル名やパスを変えたい場合に使います。「変更前」「変更後」の2つの欄に分けて入力します(どちらも書き出し先の中でのパスです)。

使いどころ: 動的サイト側の .htaccess は baserCMS 自体の書き換えルールに使われているため、静的サイトにそのまま持って行くと壊れます。静的サイト専用の .htaccess をテーマ内に別名で置いておき、公開するときだけ本来の名前へ変える、といった使い方ができます。

変更前変更後
テーマ名/cms.htaccess.htaccess
不要なら1行も無くて構いません。「行を追加」「削除」で行数を増減できます。

どこからのパスを書くのか

左右どちらも書き出し先の中でのパスです。公開サイトでの置き場所と同じ形になります。/home/… のようなサーバーの絶対パスは書けません(先頭の /.. は保存時にエラーになります)。

ファイルの出どころ「変更前」に書くパス
アップローダーfiles/uploads/2026/01/photo.jpg
テーマの webrootテーマ名/css/style.css(テーマ名の部分は小文字+アンダースコア)
手動同期パターンで足したファイルpdf/annai.pdf(webroot からのパスそのまま)
外部フォルダの同期で運んだファイル置き場所/ファイル名(置き場所が bc-front なら bc-front/logo.png
迷ったら「除外パターン」と同じ書き方だと考えてください。照合するパスは同じものです(除外パターンだけは先頭に / を付けます)。

ファイル名だけを書いても当たりません。必ずフォルダを含めたパスで書いてください。どこにも当たらなかった指定は、同期のたびにログへ警告として残ります。リネームしたはずなのに公開サイトが変わらないときは、まずログを見てください。

「*」でまとめて指定する

「変更前」には *(1階層ぶんの任意の文字)と **(階層をまたぐ任意の文字)が使えます。当たった部分は、「変更後」に書いた * **書いた順に入ります。

変更前変更後結果
テーマ名/static/****テーマの static/ 以下を、公開先の直下へまとめて移す
テーマ名/*.cms.htmlテーマ名/*.html同じ場所のまま、○○.cms.html○○.html という名前で公開する
*/pdf/**pdf/*/**2つの * は書いた順に対応します(1つ目→1つ目、2つ目→2つ目)

「変更前」で * を使ったら、「変更後」にも * が要ります。数は「変更前」と同じか、それより少なくしてください。無いと当たったファイルが全部同じ1つのファイルになって上書きし合うため、保存時にエラーになります。

完全一致のルールが先に当たります。そのあとはワイルドカードのルールを上から順に見て、最初に当たったものを使います。

アップローダーの公開期間限定ファイル

アップローダーで「公開期間」を設定したファイルは、baserCMS が files/uploads/limited/ フォルダへ移動して、期間内かどうかをPHPが毎回判定してから配信しています。静的サイトにはその判定を行うPHPがありません。

選択肢動作
公開期間内のものだけ公開サイトへ持って行く初期値 静的化を実行した時点で公開期間内のファイルだけを、CMSと同じURL(/files/uploads/ファイル名)に置きます。期間外のファイルは置きません。一度公開したあとに期間が切れた場合は公開先からも消えます。
公開期間を設定したファイルは一切持って行かない 期間内かどうかによらず、公開期間を設定したファイルをすべて除外します。

期間切れに気づけるのは静的化を実行したときだけです。公開終了の時刻ちょうどに見えなくなる必要があるファイルは、このプラグインでの静的化ではなくCMSの動的配信のままにしてください。

また、baserCMS がファイルを limited フォルダから出すのは、そのファイルを編集して公開期間を空にして保存したときだけです。公開終了日時を過ぎても、ファイルは limited フォルダに入ったままになります。

画像やCSSが公開されないとき

確認すること内容
同期が有効か「静的ファイル同期の有効/無効」がオンになっているか。
除外に当たっていないか除外パターンに **/cache/** があるため、パスに cache を含むファイルは同期されません。
書き出し先に来ているか一時生成先パスの下を直接見て、ファイルが来ているか確認します。来ていなければ同期の問題、来ているのに公開先に無ければ公開の問題です。
権限があるかコピー元が読めて、書き出し先が書けるか。ログに「同期に失敗」と出ていないか確認してください。