不適切な公開HTML削除
バージョン1.18.0よりメンテナンス用に公開側に残ってしまった不適切なHTMLを削除するタスクを追加しました。
概要
ページ、フォルダーは公開ディレクトリにHTMLを書き出します。
不具合や何らかの運用により、ページ、フォルダーが非公開状態であるにもかかわらず、HTMLが残ってしまうケースが報告されています。
HTMLが残ってしまうと、公開画面からアクセスした際にページが表示されてしまう為、不適切なHTMLを削除する rake task
を導入しました。
実行方法
- コマンド:
bundle exec rake cms:remove_improper_htmls email=sys@example.co.jp
コマンド引数
エラー報告のみ
- コマンド:
bundle exec rake cms:remove_improper_htmls email=sys@example.co.jp dry_run=1
コマンド引数
dry_run
に何かしらの値を設定すると、不適切なHTMLがあった際に削除しません。
ホワイトリスト
config/remove_improper_htmls.yml
ignore_paths:
- sample.html
- docs
remove_improper_htmls.yml
にパスを設定すると、エラーがあった際にスキップします。
公開ディレクトリ配下のパスを配列形式で記述します。
- html のパス
- ディレクトリ(その配下でエラーになった際にスキップ)
動作
-
公開ディレクトリ(ドキュメントルート)配下にあるHTMLを順次チェックして判定します。
-
判定は、対応するページ、フォルダーが公開状態にあり、動的に応答できる状態にあるかをチェックしています。
- 動的に応答した場合と比較して、出力されるHTMLが完全に一致しているかまではチェックしていません。
- この実装を行う場合、書き出し処理と同等の負荷及び実行時間がかかる為、妥当かまでのチェックとしています。
注意点
-
公開ディレクトリ(ドキュメントルート)配下にあるHTMLをチェックする動作の為、他の書き出し処理が動作していないタイミングで実行するのが望ましいです。
-
書き出し処理ほどではありませんが、ページ数によってはそれなりに実行時間がかかる為、夜間に定期実行する運用を想定しています。
-
アップローダーフォルダーの配下にあるHTMLは正常判定となり、削除対象となりません。
-
記事フォルダーなどで、アップローダー機能に切り替えてアップしたファイルは、不適切判定となり削除対象となります。(このような運用は想定していません)
-
フォルダー取り込み機能でインポートしたHTMLは正常判定となり、削除対象となりません。
簡単な動作確認
以下のようにすると、公開ディレクトリ(ドキュメントルート)配下に手動でHTMLを配置して、不適切なHTMLとして削除されるかを確認できます。
- サイトホスト名
www
- 公開ディレクトリ
public/sites/w/w/w/_/
# cd /var/www/shirasagi
# touch public/sites/w/w/w/_/sample.html
# bundle exec rake cms:remove_improper_htmls
> #サイト名
> remove /var/www/shirasagi/public/sites/w/w/w/_/sample.html