ページ削除により、ファイルにアクセスできなくなる現象と対策
2024年12月12日 22時00分 [akaz]弊社サイトをリニューアルしていて遭遇した現象を報告いたします。皆さまがサイトのページ構成を変更されるときの参考になればと思います。
概要
現象自体は、GitHubのissueにて報告されております(#1996)。
- 現象確認バージョン: Connect-CMS - version1.21
- 確認プラグイン:固定記事、データベース
- 未確認だが発症すると思われるプラグイン:フォトアルバム、ブログ、掲示板、キャビネットなど
もう少し詳しく申し上げますと、以下のような現象です。
(1)ページAにコンテンツAがあり、そこに画像などのファイルがあったとします。
(2)ページBでもコンテンツAを表示させます。
(3)不要になったページAを削除します。
(4)ページBのコンテンツAで、画像は表示されなくなり、PDF等のファイルはダウンロードできなくなります。
実際の現象と対策
(1)「会社案内」ページとその下層に「代表より」ページがありました。
(2)サイトリニューアルにより、「代表より」ページのコンテンツは「会社案内」ページに移動しました(正確には、「会社案内」ページでも表示するようにした)。
※この様子をデモした様子が以下の桜Aの画像です。元々は下層の「代表より」ページに載せていましたが、上層の「会社案内」ページに表示するようにしました。
(3)ここで、不要となった下層の「代表より」ページを削除すると、上層の「会社案内」ページで桜A画像が表示されなくなります。
※実際には、ブラウザのキャッシュにより画像は表示されます。このため、大規模にサイト構成を変更して気づかないまま何日かたって、何かの都合でブラウザのキャッシュをクリアしたときに、「あ、あちこちの画像が表示されない!PDFをダウンロードできない!」と恐れおののくこととなります。
(4)「管理者メニュー」 → 「アップロードファイル」でもこの現象を確認できます。
※ファイルのID(ここでは「98」)は、コンテンツ画面のHTMLエディタやブラウザのディベロッパーツールで確認できます。
(5) 以降は対策です。
DBのuploadsテーブルで、id = 98 のレコードを探します。page_idが「18」となっていますが、この18のページは削除された「代表より」ページなのです。
(6)pagesテーブルで、「会社案内」ページの id を探します。すると、id=3 とわかります。
(7)uploadsテーブルに戻り、id=98のファイルのpage_idを(6)で見つけた「3」に変更します。
(8)すると、「アップロードファイル」画面で ID = 98 の画像が表示されるようになり、所属するページも「会社案内」に変わります。
(9)「会社案内」ページでも、桜Aの画像が表示されるようになりました。
もし、対象画像が多い場合は、(7)でSQL文を使って一括で更新すればいいでしょう。