Le immagini caricate che non funzionano su un sito di staging in sottocartella di CloudPanel (ad esempio domain.com/staging/) hanno quasi sempre un’unica causa: la configurazione Nginx predefinita di CloudPanel include regole di rewrite pensate per WordPress Multisite che rimuovono il prefisso /staging/ dalle richieste e cercano le nuove immagini nella cartella del sito di produzione. La soluzione è una rapida modifica a due regole di rewrite nel Vhost del tuo sito e richiede circa due minuti.
Perché le immagini appena caricate non funzionano su un sito di staging CloudPanel?
Quando crei un sito di staging in una sottocartella, i suoi URL hanno un aspetto come domain.com/staging/. CloudPanel fornisce una configurazione Nginx predefinita con regole di rewrite pensate per WordPress Multisite. Queste regole intercettano le richieste alla cartella /staging/, rimuovono il prefisso e risolvono il percorso rispetto alla directory del tuo sito di produzione. Le immagini appena caricate esistono solo nella cartella di staging, quindi Nginx non le trova e restituisce un link non funzionante o un errore 404, anche se il caricamento è andato a buon fine.
La causa risiede esclusivamente nelle regole di rewrite di Nginx. Non c’è nulla di sbagliato in WordPress, nella tua libreria multimediale o nei file caricati.
Come risolvo le immagini non funzionanti su CloudPanel e Nginx?
Aggiungi un’esclusione alla configurazione Nginx del tuo sito in modo che le regole di rewrite di Multisite saltino la tua cartella di staging. L’intera modifica avviene nell’editor del Vhost di CloudPanel e richiede circa due minuti.
Passaggio 1: Apri l’editor del Vhost del tuo sito
- Accedi alla tua dashboard di CloudPanel.
- Fai clic sul sito web in cui i caricamenti non funzionano.
- Apri la scheda Vhost dal menu in alto.
Passaggio 2: Sostituisci le regole di rewrite di Multisite
Scorri fino alla sezione dei file statici. Inizia con una riga simile a:
location ~* ^.+.(css|js|jpg|jpeg|gif|png...)$
All’interno di quel blocco, elimina queste due righe di rewrite predefinite:
# WordPress Multisite Subdirectory
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 break;
rewrite ^/[_0-9a-zA-Z-]+(/.*.php)$ $1 break;Incolla al loro posto queste righe aggiornate:
# WordPress Multisite Subdirectory (Excluding WP Staging)
rewrite ^/(?!staging)[_0-9a-zA-Z-]+(/wp-.*) $1 break;
rewrite ^/(?!staging)[_0-9a-zA-Z-]+(/.*.php)$ $1 break;Il lookahead negativo (?!staging) indica a Nginx di applicare il rewrite di Multisite a ogni cartella tranne staging, in modo che le richieste delle immagini di staging vengano risolte correttamente.
Passaggio 3: Salva e ricarica Nginx
Fai clic sul pulsante Save in basso a destra. CloudPanel ricarica Nginx automaticamente e le immagini di staging appena caricate iniziano a funzionare immediatamente.
E se la mia cartella di staging non si chiama «staging»?
Se il tuo sito di staging si trova in una cartella con un nome diverso — dev, test o qualsiasi altro — cambia la parola staging in entrambe le righe di rewrite in modo che corrisponda al nome reale della tua cartella. Il resto della regola rimane invariato.
Questa correzione verrà sovrascritta?
Sì, se fai clic sul pulsante Reset to Default nella scheda Vhost. Quel pulsante ripristina la configurazione standard di CloudPanel e rimuove l’esclusione, quindi dovresti riapplicare queste due righe in seguito. I normali aggiornamenti di CloudPanel e WordPress non toccano il tuo Vhost salvato.
Domande frequenti
Questa modifica influisce sul mio sito di produzione?
No. L’esclusione (?!staging) cambia solo il modo in cui Nginx instrada le richieste all’interno della sottocartella di staging. Le richieste al tuo sito di produzione continuano a corrispondere alla regola Multisite originale, senza modifiche.
Perché solo le immagini appena caricate non funzionano e non quelle più vecchie?
Le regole predefinite inviano le richieste di staging alla tua cartella di produzione. Le immagini che carichi dopo aver creato il sito di staging esistono solo nella cartella di caricamento di staging, quindi Nginx non le trova lì e restituisce un errore 404.
Uso Apache, non Nginx. Si applica anche a me?
No. CloudPanel serve i siti con Nginx, quindi questa correzione è specifica per Nginx. La sintassi di rewrite mostrata qui non funziona in un file .htaccess di Apache.
Devo riavviare qualcosa dopo il salvataggio?
No. CloudPanel ricarica Nginx per te quando fai clic su Save. La correzione è attiva non appena il ricaricamento è completato.