# Mettre à jour les URL dans un sondage après avoir changé le CDN

**URL:** https://meta.discourse.org/t/update-urls-inside-a-poll-after-changing-cdn/405198
**Category:** Support
**Tags:** polls
**Created:** [Juin 12, 2026, 5:19 UTC](https://meta.discourse.org/t/update-urls-inside-a-poll-after-changing-cdn/405198 "2026-06-12T17:19:32Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [Juin 12, 2026, 5:19 UTC](https://meta.discourse.org/t/update-urls-inside-a-poll-after-changing-cdn/405198/1 "2026-06-12T17:19:33Z")

</div>

J’ai créé un sondage sur mon forum comme ceci :

```plaintext
[poll name=freestyle type=multiple results=always min=1 max=14 public=true chartType=bar]
* **#1**![DSC_2281.jpg|332x500, 33%](upload://ujMDcnd4syevNGdEN2O1qUTeWeK)
* **#2**![IMG_3248.jpg|690x459, 33%](upload://tsecEjlruXEpg3faidWmENBupM4)
[/poll]

```

J’ai migré d’un CDN vers l’absence de CDN, et les URLs ont été modifiées de `cdn.unicyclist.com` vers `unicyclist.com`.

Cependant, les URLs des images ici restent cassées, bien qu’elles apparaissent dans l’aperçu du message :

 ![image](https://global.discourse-cdn.com/meta/original/4X/f/5/6/f56c97e36017c0097a87f79f7d2093d93d8354e8.jpeg)

Le retraitement des messages et l’exécution de `rake 'posts:remap[cdn.unicyclist.com,unicyclist.com]'` n’ont pas résolu le problème.

[ask.discourse.org](http://ask.discourse.org) conseille :

> ## Ce qui se passe probablement
> 
> Les options de votre sondage ne sont pas seulement dans le texte brut du message. Sur le schéma de votre site, les sondages stockent également le HTML rendu des options dans :
> 
> - `polls`
> - `poll_options.html`
> 
> Ainsi, l’aperçu du message peut sembler correct, mais le rendu du sondage peut toujours utiliser un HTML obsolète avec l’ancien nom de domaine du CDN.
> 
> Documentation associée :
> 
> - [Création et gestion des sondages](https://meta.discourse.org/t/creating-and-managing-polls/77548)
> - [Supprimer DISCOURSE\_CDN\_URL](https://meta.discourse.org/t/remove-discourse-cdn-url/148096)
> - [Désactiver le CDN entraîne l’impossibilité d’afficher les anciennes images avec l’URL du CDN](https://meta.discourse.org/t/disable-cdn-causes-old-images-with-cdn-url-can-not-be-shown/29657)
> - [Remplacer une chaîne dans tous les messages](https://meta.discourse.org/t/replace-a-string-in-all-posts/48729)
> 
> ## Avertissement important
> 
> **Faites d’abord une sauvegarde complète.**
> 
> De plus, évitez de « simplement modifier » le sondage s’il a des votes, car les modifications de sondage effacent normalement les votes :
> 
> - [Création et gestion des sondages — Les sondages peuvent-ils être modifiés ?](https://meta.discourse.org/t/creating-and-managing-polls/77548)
> 
> ## Approche plus sûre : inspectez d’abord un sondage cassé
> 
> Dans le conteneur :
> 
> ```bash
> cd /var/discourse
> ./launcher enter app
> rails c
> 
> ```
> 
> Ensuite, trouvez le sondage pour ce message :
> 
> ```rb
> poll = Poll.find_by(post_id: POST_ID, name: "freestyle")
> PollOption.where(poll_id: poll.id).pluck(:id, :html)
> 
> ```
> 
> Si vous voyez `cdn.unicyclist.com` dans ce HTML, cela le confirme.
> 
> ## Réparez ce sondage
> 
> ```rb
> poll = Poll.find_by(post_id: POST_ID, name: "freestyle")
> 
> PollOption.where(poll_id: poll.id).find_each do |opt|
> new_html = opt.html.gsub("cdn.unicyclist.com", "unicyclist.com")
> opt.update_columns(html: new_html, updated_at: Time.zone.now)
> end
> 
> ```
> 
> Ensuite, retraiter également ce message :
> 
> ```rb
> Post.find(POST_ID).rebake!
> 
> ```
> 
> ## Si cela fonctionne, corrigez en lot toutes les options de sondage
> 
> ```rb
> PollOption.find_each do |opt|
> next unless opt.html&.include?("cdn.unicyclist.com")
> opt.update_columns(
> html: opt.html.gsub("cdn.unicyclist.com", "unicyclist.com"),
> updated_at: Time.zone.now
> )
> end
> 
> ```
> 
> ## Pourquoi `posts:remap` n’a pas aidé
> 
> Parce que cette tâche rake est destinée au **contenu des messages** , tandis que vos références d’images cassées se trouvent probablement dans le cache HTML des options de sondage :
> 
> - [Remplacer une chaîne dans tous les messages](https://meta.discourse.org/t/replace-a-string-in-all-posts/48729)
> 
> ## Recommandation
> 
> 1. testez sur **un seul** sondage cassé
> 2. confirmez que les images se chargent
> 3. uniquement ensuite, exécutez la correction en lot
> 
> Si vous le souhaitez, je peux vous écrire un **script à copier-coller** où vous ne devez remplacer que `POST_ID` et l’exécuter en toute sécurité sur un seul sondage d’abord.

Cela vous semble-t-il correct ? Je ferai bien sûr une sauvegarde au préalable, mais je préfère éviter de devoir restaurer mon forum.

Je dois conserver tous les résultats des sondages 🙂

Question bonus : Discourse devrait-il gérer nativement ces cas ?

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [Juin 21, 2026, 2:58 UTC](https://meta.discourse.org/t/update-urls-inside-a-poll-after-changing-cdn/405198/2 "2026-06-21T02:58:20Z")

</div>

> [@Canapin](#):
>
> Recompiler les messages et exécuter `rake 'posts:remap[cdn.unicyclist.com,unicyclist.com]'` n’a pas résolu le problème.

Je viens de lire ce message et, si vous ne l’avez pas encore corrigé, je pense que vous pouvez utiliser la fonction intégrée `discourse remap`.

Contrairement à la tâche rake, `discourse remap` utilise `DbHelper.remap`, qui effectue une recherche et un remplacement par expression régulière globale sur toutes les colonnes de texte de toutes les tables de la base de données PostgreSQL. Il devrait donc réussir à trouver et à mettre à jour les URL CDN compilées piégées dans `poll_options.html` (ainsi que dans toute autre table que la tâche rake ignore).

```plaintext
cd /var/discourse
./launcher enter app

```

```plaintext
# créer une sauvegarde de sécurité
discourse backup

```

```plaintext
# exécuter le remappage global (domaine uniquement, sans protocole, pour capturer toutes les variantes)
discourse remap 'cdn.unicyclist.com' 'unicyclist.com'

```

```plaintext
# vider le cache Redis (crucial car Discourse met fortement en cache le HTML compilé)
rake cache:clear

```

J’ai fait quelque chose de similaire ici (mais dans l’autre sens) : [Chat thumbnails bypass s3\_cdn\_url & use raw S3 bucket URLs - #8 by Lilly](https://meta.discourse.org/t/chat-thumbnails-bypass-s3-cdn-url-use-raw-s3-bucket-urls/404174/8?u=lilly)
