
🚀 Reindirizzamento da www a non-www usando .htaccess: una guida completa per Grav, WordPress e altri CMS
Il sito si apre sia con www che senza, ma i motori di ricerca vedono due indirizzi diversi con contenuti identici. Duplicati di pagina, link equity diluita, confusione in Search Console. Ti suona familiare?
Né Grav né WordPress risolvono questo problema in modo nativo. Il file .htaccess e un singolo blocco di codice sistemano tutto in cinque minuti. Di seguito trovi le righe testate per server Apache: universali, senza domini cablati, con HTTPS e senza. Più un metodo per verificare che il redirect funzioni al di là del browser.
💡 Panoramica rapida:
- Scegli una versione canonica (con www o senza) e aggiungi un redirect 301 universale a
.htaccess - Verifica la catena di redirect con
curl -Io un checker online: i browser memorizzano nella cache i 301 e possono mentire - Un blocco di codice risolve simultaneamente il problema www e forza HTTPS
Perché scegliere tra www e non-www
Google non preferisce una variante rispetto all'altra; la posizione ufficiale è rimasta invariata per anni. Ma devi sceglierne una e mantenerla. Senza un redirect, www.site.ru/page e site.ru/page vengono indicizzati come URL diversi, la link equity si divide a metà e le analytics contano lo stesso traffico due volte.
Quale scegliere? Per progetti grandi, www è più comodo: i cookie non si propagano ai sottodomini come cdn. e api., e i record DNS sono più facili da configurare. Per siti più piccoli, non c'è quasi alcuna differenza. Concentrati su ciò che è già indicizzato: digita site:yourdomain.ru nella ricerca e verifica quale variante compare più spesso nei risultati. Rendi quella canonica.
Nota tecnica: Grav non genera redirect in autonomia. WordPress lo fa solo se siteurl nelle impostazioni corrisponde esplicitamente alla variante desiderata, ma anche in quel caso funziona in modo incostante. La soluzione è una sola: mod_rewrite in Apache tramite .htaccess.
Dove si trova.htaccess e come non romperlo
Il file .htaccess si trova nella root del sito, insieme a index.php o alla cartella wp-admin. Se il file non esiste (Grav senza template pronto, hosting nuovo), crea un file di testo chiamato .htaccess con il punto iniziale obbligatorio.
Prima di qualsiasi modifica, scarica la versione corrente sul tuo computer. Un errore di sintassi in .htaccess manda subito il sito in crash con un errore 500. Regola ferrea: una copia di backup in locale, un'altra con un nome diverso direttamente sul server (.htaccess.backup). Puoi ripristinare anche senza accesso al pannello di amministrazione, via FTP o dal file manager dell'hosting.
Per Grav e WordPress la regola è la stessa: se il file contiene già RewriteEngine On, non duplicare quella riga. Aggiungi il nuovo blocco di redirect dopo di essa. Nell'.htaccess standard di Grav, questa riga è presente di default.
Redirect 301 da www a non-www: codice universale
Il codice qui sotto funziona per qualsiasi dominio; non devi sostituire manualmente example.com. Comodo se gestisci più siti o trasferisci regole tra progetti. Aggiungi a .htaccess dopo RewriteEngine On:
1 RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 2 RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Riga per riga: RewriteCond intercetta qualsiasi host che inizia con www. e cattura il dominio tra parentesi. RewriteRule reindirizza la richiesta allo stesso percorso senza www, sostituendo il dominio catturato tramite %1. Il flag R=301 indica un redirect permanente. L dice al server "fermati, non applicare ulteriori regole". NC rende il controllo case-insensitive.
Se il sito gira su HTTPS, sostituisci http:// con https:// in RewriteRule. Meglio ancora, usa un blocco combinato che risolve sia www che HTTPS in un unico passaggio:
1 RewriteCond %{HTTPS} off [OR] 2 RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 3 RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
La prima condizione si attiva sulle richieste HTTP, la seconda su www. Se una delle due è vera ([OR]), la richiesta va a https://domain-without-www/path. Un blocco, due problemi risolti.
Scenario inverso: da non-www a www
Se hai bisogno che la barra degli indirizzi mostri sempre www, usa la variante speculare:
1 RewriteCond %{HTTP_HOST} !^www\. [NC] 2 RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
La logica è la stessa, solo la condizione è invertita: se l'host non inizia con www, aggiungiamo www. all'inizio. %{HTTP_HOST} sostituisce l'host corrente per intero, a differenza del blocco precedente in cui rimuovevamo www. tramite cattura con parentesi.
Versione con HTTPS:
1 RewriteCond %{HTTPS} off [OR] 2 RewriteCond %{HTTP_HOST} !^www\. [NC] 3 RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
Usa uno dei quattro blocchi, quello che corrisponde alla tua variante di dominio canonico e alla presenza di HTTPS. Due blocchi in sequenza sono inutili e creano un passaggio extra nella catena di redirect.
Come verificare che il redirect funzioni
Non fidarti del browser; memorizza nella cache i redirect 301 e mostra la vecchia situazione anche dopo aver modificato .htaccess. Tre modi per scoprire la verità:
- curl** -I.** Nel terminale:
curl -I http://www.example.com. Una risposta corretta inizia conHTTP/1.1 301 Moved Permanently, e l'headerLocation:contiene l'URL di destinazione. Verifica entrambe le varianti, con www e senza. - Checker online. Redirect Checker o HTTP Status Code Checker: incolla l'URL, visualizza l'intera catena di redirect e il codice di risposta finale.
- Google Search Console. Dopo aver cambiato il dominio canonico, vai nelle impostazioni della proprietà e specifica la versione preferita. Questo non sostituisce
.htaccessma fornisce al motore di ricerca un segnale aggiuntivo.
Un consiglio specifico per Grav: dopo aver modificato .htaccess, svuota la cache del CMS tramite Admin → Configurazione → Prestazioni → Svuota cache. Grav memorizza le pagine nella cache in modo aggressivo e, senza svuotamento, il redirect potrebbe non applicarsi alle copie già generate.
⁉️🤔 Domande frequenti
Quale variante è migliore per la SEO, con www o senza?
Google dichiara ufficialmente: non c'è differenza. Scegline una e mantienila. Il fattore chiave è la coerenza: link interni, sitemap e tag canonical devono puntare a una sola variante. Secondo un sondaggio di Ahrefs, circa il 55% dei siti nella top-100 usa la versione senza www, ma entrambe le varianti si posizionano ugualmente bene.
Cosa succede se non si imposta alcun redirect?
I motori di ricerca vedranno due siti duplicati indipendenti. La link equity si dividerà, le pagine inizieranno a competere tra loro nei risultati e i report di analytics distribuiranno lo stesso traffico su due host. Dopo qualche mese, il quadro tipico: metà delle pagine indicizzate con www, metà senza, posizionamenti instabili.
Si può fare a meno di.htaccess?
Sì, ma le alternative sono o più complesse o più lente. Plugin WordPress come Redirection e Rank Math lavorano a livello PHP; ogni richiesta passa attraverso il core di WordPress, generando carico. Per siti ad alto traffico,
.htaccessa livello Apache è sensibilmente più veloce. Per Grav, i plugin di redirect sono praticamente inesistenti, quindi.htaccessresta la via principale. Su server NGINX, l'equivalente sono le direttivereturn 301nel bloccoserver {}.
Bisogna impostare un redirect per ogni pagina separatamente?
No, le regole fornite sono universali; si applicano automaticamente a tutti gli URL del sito. Un blocco copre homepage, pagine interne, immagini e file CSS. Redirect separati da vecchi URL a nuovi si configurano in aggiunta con righe
Redirect 301 /old-page /new-page, ma non hanno nulla a che fare con il problema www.
Errore 500 dopo la modifica di.htaccess, cosa fare?
Copia
.htaccess.backupal suo posto via FTP o dal file manager dell'hosting; il sito tornerà immediatamente online. Verifica la presenza di errori di battitura nel codice: uno spazio mancante, uno slash di troppo, parentesi non corrispondenti. Aggiungi le regole una alla volta e testa dopo ogni modifica. E non modificare mai.htaccessin produzione senza un backup aggiornato a portata di mano.
Il redirect funziona, ma Google continua a mostrare la vecchia versione nei risultati. Perché?
La reindicizzazione richiede da qualche giorno a un paio di settimane. Assicurati che i tag canonical sulle pagine puntino alla variante scelta e che la sitemap contenga URL senza il vecchio host. In Search Console puoi richiedere una nuova scansione tramite lo strumento Ispezione URL; questo accelera il processo ma non garantisce risultati immediati.
Quale variante impostare: il verdetto in breve
Se il sito è nuovo, scegli non-www e HTTPS. Meno caratteri nella barra degli indirizzi, più facile da dettare a voce, nessun problema di cookie con i sottodomini. Per la maggior parte dei progetti, questo è più che sufficiente.
Già indicizzato con www? Non rompere ciò che funziona. Imposta un redirect da non-www a www, aggiorna i tag canonical e vai avanti.
L'intero processo: apri .htaccess, aggiungi uno dei quattro blocchi sopra, svuota la cache del CMS, verifica con curl -I. Cinque minuti, e i duplicati spariscono dal panorama di ricerca. Altre tecniche per .htaccess sono raccolte nella guida alla configurazione del server; dalle un'occhiata se stai configurando un sito in modo completo.



