チャットのサムネイルが s3_cdn_url をバイパスし、生きた S3 バケット URL を使用

カスタム絵文字を追加したサイトでは、修正がマージされたことでチャット内の絵文字が壊れています。

標準的な投稿画像(rake posts:rebake で修正可能)とは異なり、チャットのカスタム絵文字は /site.json を介してフロントエンドに動的に渡されます。

データベースにプロトコル(例://bucket.endpoint...)が欠落している S3 URL や、app.yml の環境変数と完全に一致しない仮想ホスト形式のドメインを使用している場合、Discourse の内部 CDN 置換処理は静かに失敗します。その結果、生のバケット URL がブラウザに渡され、チャット内のカスタム絵文字が壊れます。

修正方法:

この問題を永久的に修正するには、データベース内の生のバケット URL を CDN URL に強制的にリマップし、サイトキャッシュをクリアして /site.json を再生成する必要があります。

1. コンテナに入る:

サーバーに SSH で接続し、Discourse コンテナ(通常は app、2コンテナ構成の場合は web_only)に入ります。

cd /var/discourse
./launcher enter app

2. URL をリマップする:

Discourse 組み込みの remap ツールを実行します。移行スクリプトが残したことがある https:// 形式とスキームレスの // 形式の両方を捕捉するため、2回実行してください。

プレースホルダーを実際の生のバケット URL と実際の CDN URL に置き換えてください。

# 標準的な https:// URL を修正する
discourse remap "https://<your-bucket>.<your-endpoint>.com" "https://cdn.your-domain.com"

# スキームレスの // URL を修正する(これが通常カスタム絵文字を壊す原因となる)
discourse remap "//<your-bucket>.<your-endpoint>.com" "https://cdn.your-domain.com"

3. キャッシュをクリアする

/site.json は強力にキャッシュされているため、フォラムが新しい URLを提供させるために Rails キャッシュをクリアする必要があります。

Rails コンソールを開く:

rails c

次のコマンドを実行する:

Rails.cache.clear
Site.clear_cache
exit

4. 更新

ブラウザをハードリフレッシュしてください(まだ使用している場合はテーマコンポーネントのワークアラウンドを無効にしてください)。チャット内のカスタム絵文字は正常に修正され、CDN 経由で適切に読み込まれるはずです。

「いいね!」 2