Les téléversements d’images cassés sur un site de préproduction CloudPanel installé dans un sous-dossier (par exemple domain.com/staging/) ont presque toujours une seule cause : la configuration Nginx par défaut de CloudPanel inclut des règles de réécriture destinées à WordPress Multisite qui suppriment le préfixe /staging/ des requêtes et cherchent vos nouvelles images dans le dossier du site de production. La solution est une modification rapide de deux règles de réécriture dans le Vhost de votre site et prend environ deux minutes.
Pourquoi les images récemment téléversées sont-elles cassées sur un site de préproduction CloudPanel ?
Lorsque vous créez un site de préproduction dans un sous-dossier, ses URL ressemblent à domain.com/staging/. CloudPanel fournit une configuration Nginx par défaut avec des règles de réécriture prévues pour WordPress Multisite. Ces règles interceptent les requêtes vers le dossier /staging/, suppriment le préfixe et résolvent le chemin par rapport au répertoire de votre site de production. Les images récemment téléversées n’existent que dans le dossier de préproduction : Nginx ne les trouve donc pas et renvoie un lien cassé ou une erreur 404, alors même que le téléversement a réussi.
La cause se situe uniquement dans les règles de réécriture de Nginx. WordPress, votre médiathèque et les fichiers téléversés ne sont pas en cause.
Comment corriger les images cassées sur CloudPanel et Nginx ?
Ajoutez une exclusion à la configuration Nginx de votre site pour que les règles de réécriture Multisite ignorent votre dossier de préproduction. Toute la modification se fait dans l’éditeur de Vhost de CloudPanel et prend environ deux minutes.
Étape 1 : Ouvrez l’éditeur de Vhost de votre site
- Connectez-vous à votre tableau de bord CloudPanel.
- Cliquez sur le site web où les téléversements échouent.
- Ouvrez l’onglet Vhost dans le menu supérieur.
Étape 2 : Remplacez les règles de réécriture Multisite
Faites défiler jusqu’à la section des fichiers statiques. Elle commence par une ligne comme :
location ~* ^.+.(css|js|jpg|jpeg|gif|png...)$
Dans ce bloc, supprimez ces deux lignes de réécriture par défaut :
# WordPress Multisite Subdirectory
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 break;
rewrite ^/[_0-9a-zA-Z-]+(/.*.php)$ $1 break;Collez ces lignes mises à jour à leur place :
# WordPress Multisite Subdirectory (Excluding WP Staging)
rewrite ^/(?!staging)[_0-9a-zA-Z-]+(/wp-.*) $1 break;
rewrite ^/(?!staging)[_0-9a-zA-Z-]+(/.*.php)$ $1 break;L’assertion d’anticipation négative (?!staging) indique à Nginx d’appliquer la réécriture Multisite à tous les dossiers sauf staging, afin que les requêtes vers vos images de préproduction soient résolues correctement.
Étape 3 : Enregistrez et rechargez Nginx
Cliquez sur le bouton Save en bas à droite. CloudPanel recharge Nginx automatiquement et vos images de préproduction récemment téléversées fonctionnent immédiatement.
Et si mon dossier de préproduction ne s’appelle pas « staging » ?
Si votre site de préproduction se trouve dans un dossier portant un autre nom — dev, test ou tout autre —, remplacez le mot staging dans les deux lignes de réécriture par le nom réel de votre dossier. Le reste de la règle ne change pas.
Cette correction sera-t-elle écrasée ?
Oui, si vous cliquez sur le bouton Reset to Default dans l’onglet Vhost. Ce bouton restaure la configuration standard de CloudPanel et supprime l’exclusion : vous devrez donc réappliquer ces deux lignes ensuite. Les mises à jour normales de CloudPanel et de WordPress ne touchent pas à votre Vhost enregistré.
Foire aux questions
Cette modification affecte-t-elle mon site de production ?
Non. L’exclusion (?!staging) ne change que la façon dont Nginx achemine les requêtes au sein du sous-dossier de préproduction. Les requêtes vers votre site de production continuent de correspondre à la règle Multisite d’origine, sans changement.
Pourquoi seules les images récemment téléversées sont-elles cassées, et pas les anciennes ?
Les règles par défaut envoient les requêtes de préproduction vers votre dossier de production. Les images que vous téléversez après avoir créé le site de préproduction n’existent que dans le dossier de téléversement de préproduction : Nginx ne les y trouve pas et renvoie une erreur 404.
J’utilise Apache, pas Nginx. Est-ce que cela s’applique ?
Non. CloudPanel sert les sites avec Nginx, donc cette correction est spécifique à Nginx. La syntaxe de réécriture présentée ici ne fonctionne pas dans un fichier .htaccess d’Apache.
Dois-je redémarrer quelque chose après l’enregistrement ?
Non. CloudPanel recharge Nginx pour vous lorsque vous cliquez sur Save. La correction est active dès que le rechargement est terminé.