Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🚀 Dominio senza cookie in WordPress: guida completa alla configurazione

🚀 Dominio senza cookie in WordPress: guida completa alla configurazione

GTmetrix assegna alla tua pagina un 72/100 e tra i suggerimenti compare «Serve static content from a cookieless domain». Clicchi e vedi un elenco di 40 file CSS, ognuno con un header Set-Cookie al seguito. Immagini, font, script, decine di richieste, e ciascuna trasporta un header HTTP di cui questi file non hanno assolutamente bisogno.

Il problema non è il tuo codice. È una caratteristica architetturale: il server imposta i cookie a livello di dominio e il browser li allega diligentemente a ogni richiesta, anche a quelle per cui autenticazione e sessioni non hanno senso. Il risultato: kilobyte extra in ogni risposta, caricamento statico più lento e una bandierina rossa nei report GTmetrix e Pingdom.

Buone notizie: si risolve in 15 minuti senza cambiare hosting. Non serve un secondo server, non serve un piano enterprise costoso. Bastano un sottodominio separato o una CDN, e i file statici viaggeranno senza cookie mentre il tuo punteggio GTmetrix sale di 10-15 punti.

💡 Panoramica rapida:

  • Capire perché i cookie «traboccano» sui contenuti statici e quando è davvero un problema
  • Configurare un sottodominio separato per wp-content tramite cPanel, passo dopo passo, inclusa la sostituzione SQL degli URL
  • Collegare KeyCDN con il plugin CDN Enabler come alternativa moderna (5 minuti, a partire da 4 $/mese)
  • Capire perché Cloudflare non elimina l'avviso GTmetrix e quando puoi ignorarlo

I cookie vengono impostati a livello di dominio. Ma c'è una sfumatura spesso trascurata: i sottodomini ereditano le impostazioni dei cookie dal dominio padre. Se il sito risiede su example.com e imposta cookie per quel dominio, questi vanno automaticamente a www.example.com e static.example.com.

Ecco perché creare semplicemente un sottodominio static.example.com non basta. Mentre il sito principale resta sul dominio nudo, i cookie «traboccheranno» verso il sottodominio. La soluzione è semplice ma controintuitiva: spostare il sito su www.example.com e mettere i contenuti statici su static.example.com. Così i cookie si applicano a www, mentre static resta pulito.

La seconda opzione, un dominio completamente separato. Tecnicamente funziona, ma acquistare un dominio per questo compito non è quasi mai giustificato: una corretta gestione del sottodominio è sufficiente.

E un'altra cosa: sugli hosting WordPress gestiti come Kinsta, WP Engine o SiteGround, il problema è spesso già risolto a livello di server. Se il piano include «edge caching» o «CDN inclusa», non serve configurazione aggiuntiva.

Metodo 1. Sottodominio separato per i contenuti statici tramite cPanel

Il metodo base che funziona su qualsiasi hosting con cPanel. Nessun servizio di terze parti, nessun pagamento mensile. L'idea: creare un sottodominio, collegarlo a /wp-content e dire a WordPress di servire i contenuti statici attraverso di esso.

Creare un sottodominio

Vai in cPanel → sezione «Domini» → «Sottodomini». Crea il sottodominio static.yoursite.com. Nel campo Document Root, specifica il percorso di wp-content: di solito è public_html/wp-content.

Verifica: il sito principale deve trovarsi su www.yoursite.com. Se sei sul dominio nudo senza www, sposta prima il sito su www, altrimenti il metodo non funziona.

Aggiungere costanti a wp-config.php

Apri wp-config.php nella root del sito e aggiungi due righe PRIMA del commento /* That's all, stop editing! Happy publishing. */:

1define('WP_CONTENT_URL', 'https://static.yoursite.com');
2define('COOKIE_DOMAIN', 'www.yoursite.com');
Costanti PHP WP_CONTENT_URL e COOKIE_DOMAIN in wp-config.php

WP_CONTENT_URL dice a WordPress di servire tutti i contenuti da /wp-content/ attraverso il nuovo sottodominio. COOKIE_DOMAIN restringe l'ambito dei cookie al sottodominio www, impedendo che si diffondano a static.

Sostituire gli URL dei file esistenti nel database

Gli articoli già pubblicati memorizzano link ai vecchi URL delle immagini. Vanno sostituiti in blocco tramite phpMyAdmin.

Accedi a phpMyAdmin (cPanel → Database), seleziona il database WordPress, scheda SQL. Esegui:

1UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.yoursite.com/wp-content/', 'static.yoursite.com/');
Query SQL per sostituire URL statici in phpMyAdmin per WordPress

Prima di eseguire, fai un backup del database. La sostituzione SQL è irreversibile. Se sbagli l'URL, le immagini del sito si romperanno e dovrai ripristinare da un backup.

Pro e contro

Il metodo funziona senza servizi di terze parti e costi aggiuntivi. Però: modifica manuale di wp-config.php e del database, rischio di errori SQL, necessità di mantenere la configurazione di due sottodomini. Su VPS con NGINX dovrai anche modificare la configurazione del server, il che aggiunge complessità.

Per la maggior parte dei siti oggi esiste un'opzione più semplice, la CDN.

Metodo 2. CDN come soluzione moderna

Un Content Delivery Network porta i contenuti statici sui propri server e per impostazione predefinita non usa cookie per i file. Ottieni due cose in una: contenuti statici senza cookie più una rete di distribuzione globale che accelera il caricamento per i visitatori da qualsiasi parte del mondo.

Servizio KeyCDN, CDN a consumo con prezzi a partire da 0,04 $/GB di traffico e pagamento minimo di 4 $/mese. Per un sito medio, i costi sono di 4-10 $ al mese. Oltre 60 punti di presenza, opzione Strip Cookies integrata che rimuove forzatamente gli header Set-Cookie dalle risposte.

Collegamento tramite CDN Enabler

CDN Enabler, plugin ufficiale KeyCDN per WordPress. Versione 2.0.8, oltre 10.000 installazioni attive, testato fino a WordPress 6.9. Intercetta le pagine e riscrive gli URL dei file statici con il dominio CDN.

Passaggi di configurazione:

  • Creare un account KeyCDN. Il servizio offre un periodo di prova, puoi testarlo senza pagamento.

  • Installare CDN Enabler dal repository WordPress: Plugin → Aggiungi nuovo → cerca «CDN Enabler» → Attiva.

  • Creare una Pull zone nella dashboard KeyCDN. La zona definisce quali contenuti la CDN preleverà dal tuo sito. Specifica l'URL di origine, l'indirizzo del tuo sito.

Creazione di una Pull zone nella dashboard KeyCDN con campi URL di origine
  • Copia l'URL della zona, che ha questo aspetto: https://yourzone.kxcdn.com, e incollalo nelle impostazioni di CDN Enabler: Impostazioni → CDN Enabler → CDN Hostname.
Campo Hostname CDN nelle impostazioni del plugin CDN Enabler per WordPress
  • Attiva Strip Cookies in KeyCDN: Impostazioni zona → Strip Cookies = Attivato. Questa opzione garantisce che i file statici vengano serviti senza header Set-Cookie.

  • Svuota la cache del sito e verifica il risultato su GTmetrix.

CDN Enabler funziona con qualsiasi CDN. Se stai già usando Cloudflare, BunnyCDN o StackPath, specifica semplicemente il CDN Hostname del tuo provider.

Punto importante: dopo aver disattivato il CDN e rimosso il plugin, gli URL delle immagini potrebbero rimanere riscritti con il dominio CDN. Prima di disattivare, svuota la cache del plugin e assicurati che gli URL siano tornati a quelli originali.

Metodo 3. Cloudflare, gratuito ma con una precisazione

Cloudflare, la CDN più grande con un piano completamente gratuito. Funziona a livello DNS: si punta il dominio ai nameserver Cloudflare e tutto il traffico passa attraverso la sua rete.

Ma c'è una sfumatura. Cloudflare utilizza un cookie di servizio _cfduid per ogni richiesta, a fini di sicurezza. È fondamentale per la protezione DDoS e contro i bot e, anche attivando "Strip Cookies" sul piano Pro, questo cookie non viene rimosso.

A causa di _cfduid, GTmetrix continuerà a mostrare l'avviso "Serve static content from a cookieless domain". Raggiungere 100/100 nella metrica YSlow con Cloudflare gratuito è tecnicamente impossibile. Si tratta però di un falso positivo: i contenuti statici tramite Cloudflare vengono comunque caricati velocemente e un singolo cookie di servizio non incide sulle performance reali.

Se per te è importante il punteggio massimo su GTmetrix, scegli KeyCDN con Strip Cookies. Se la priorità è un servizio gratuito e la protezione DDoS, Cloudflare gestisce entrambe le cose in modo completo.

Quando ignorare l’avviso di GTmetrix

Situazione comune: la CDN è configurata, Strip Cookies è attivo, ma GTmetrix segnala ancora un errore di dominio senza cookie. Il motivo è che YSlow, il motore di GTmetrix, non verifica se Strip Cookies è abilitato lato CDN. Vede un URL simile al dominio principale e segnala meccanicamente un avviso.

Verifica in 30 secondi: apri Chrome DevTools (F12) → Network → seleziona un file statico qualsiasi, CSS, JS o PNG → scheda Headers → Request Headers. Se non c’è la riga Cookie:, i contenuti statici viaggiano senza cookie, puoi ignorare l’avviso di GTmetrix.

Un’altra fonte di falsi positivi sono i cookie di server per analytics e A/B testing (Google Analytics, Hotjar, VWO). Anche questi compaiono nel report come «extra», sebbene incidano in modo minimo sulla velocità della pagina.

La reale riduzione del traffico ottenuta rimuovendo i cookie dai contenuti statici è intorno al 5-15% delle richieste totali. Non è rivoluzionario, ma ogni millisecondo conta: una ricerca di Google ha mostrato che un ritardo di 1 secondo riduce del 20% la conversione dei visitatori da mobile.

⁉️🤔 Domande frequenti

Configurare un dominio senza cookie è obbligatorio?

No, non è un requisito tassativo. Ma se stai combattendo per la velocità, eliminare i cookie superflui dai contenuti statici dà guadagni misurabili, specialmente su siti con molti media: negozi online, blog fotografici e portali di notizie. Per una landing page di tre blocchi l’effetto sarà trascurabile.

Cosa fare se dopo aver modificato wp-config.php il sito non si apre più?

Quasi sicuramente hai commesso un errore negli URL delle costanti o le hai inserite DOPO la riga /* That's all, stop editing! */. Collegati al sito via FTP, apri wp-config.php e verifica: le costanti devono stare PRIMA di questo commento. Se il sito ancora non si carica, commenta le righe aggiunte (// all’inizio di ciascuna), il sito tornerà allo stato originale, dopodiché riprova con gli URL corretti.

CDN Enabler si può usare con altri plugin di caching?

Sì, nessun problema. CDN Enabler è compatibile con Cache Enabler, WP Rocket, W3 Total Cache e LiteSpeed Cache. Una precisazione: se hai WP Rocket, la CDN si configura in WP Rocket stesso, non serve un plugin CDN Enabler separato. Con gli altri plugin di caching funziona in parallelo, non sono stati registrati conflitti.

Quale CDN scegliere per un sito piccolo?

Dipende da budget e priorità. Prezzi KeyCDN (da $0,04/GB, minimo $4/mese), un buon inizio: pagamento a consumo, paghi solo il traffico. Cloudflare, gratuito ma con un cookie di servizio e falso avviso GTmetrix. BunnyCDN (da $0,01/GB sui piani a volume, minimo da $1/mese), più economico ma con meno punti di presenza. Per un sito con traffico fino a 10.000 visite al mese, i costi CDN saranno di $2-7.

Serve un dominio senza cookie se l’hosting è moderno?

Gli hosting WordPress gestiti, Kinsta, WP Engine, SiteGround, spesso includono una CDN integrata o una cache lato server che risolve già il problema dei cookie. Controlla il tuo piano: se nella descrizione compare «edge caching» o «CDN inclusa», non serve una configurazione aggiuntiva. Su hosting condivisi economici senza CDN, impostare un dominio senza cookie darà una spinta evidente.

Cosa fare se dopo la query SQL le immagini sono sparite?

O hai sbagliato l’URL (verifica la corrispondenza del dominio nella query e nelle impostazioni del sottodominio), oppure il sottodominio static.yoursite.com punta alla cartella sbagliata. Ripristina il database dal backup e controlla: la Document Root del sottodominio deve essere public_html/wp-content, e il dominio nella query SQL deve corrispondere a quello creato in cPanel (con www. o senza, dipende dalla configurazione del sito principale).

Quale metodo scegliere per il tuo progetto

Se il sito è su un hosting economico senza CDN e senza budget per servizi a pagamento, configura un sottodominio separato tramite cPanel. Sono 15 minuti di lavoro: sottodominio, due righe in wp-config.php e una query SQL. I contenuti statici viaggeranno senza cookie, GTmetrix salirà. Svantaggio: manutenzione manuale e nessuna accelerazione globale.

Se sei pronto a pagare $4-10 al mese, usa la combinazione KeyCDN + CDN Enabler. Lo stesso compito è risolto in automatico, e in più ottieni una rete di distribuzione da oltre 60 punti, compressione e accelerazione per i visitatori da qualsiasi parte del mondo. Per un progetto che guadagna o prevede di guadagnare, la CDN si ripaga subito.

E cosa più importante, non fissarti sui punteggi GTmetrix. La velocità reale per gli utenti conta più dei numeri in un report. Se i contenuti statici viaggiano senza cookie (verificato via DevTools) e il sito si carica in meno di 2 secondi, il compito è risolto.

Per rinfrescare il quadro completo su come velocizzare WordPress, aiuta la guida ufficiale del team WordPress.com, dalla cache alla CDN, con misurazioni dal vivo e configurazione: