結論
htaccessに以下を書いてみること。
※「+」のところが追加行箇所
RewriteEngine on
RewriteBase /
# プレビューのときはbaserCMSを優先し実フォルダ、ファイルをムシする
+ RewriteCond %{QUERY_STRING} (^|&)preview=([^&]+)($|&)
+ RewriteRule ^(.*)$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
前提事項としては少し特殊なケースで、webrootをドキュメントルート直下配置しているケース。
- http://wiki.basercms.net/%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%83%AB%E3%83%BC%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 の「ドキュメントルートに通常どおり静的ファイルを配置する」の状態
- コンテンツの構成がCMS側と静的ファイルが混在しているケース
- CMS側の配置: コンテンツ内の直下に、フォルダ「directory」を持ち、中にindex固定ページを持つ
- 実体となるフォルダ構成は以下の図となっている状態
.
├── index.php
├── lib
│ ├── Baser
│ └── Cake
├── directory(実体として設置。フォルダ内にindex.htmlがある。index.phpは存在しない)
└── theme
上記配置状態の際に、CMS管理側の /directory/index の編集画面から「プレビュー」を実行しても、編集領域の内容が反映されない、といったとき。
調べてみてわかった事柄としては以下の点。
- プレビューは、URLに「?preview=default」のパラメータをトリガーとして動作発生するもの
- 実ディレクトリが存在する場合、そちらへのアクセス処理が優先される、のは通常動作だが、挙げている配置構成の場合、プレビュー動作のために必要なパラメータが、プログラムの動作内ではなくなった状態となっているため動作しない。
環境
- PHP 5.6
- baserCMS 4.2.1