technical

Reindirizza HTTP a HTTPS

MetricSpot verifica che le richieste http:// vengano reindirizzate con un 301 a https://. Senza, il tuo sito ha due copie indicizzabili — e una finestra di downgrade per ogni primo visitatore.

Cosa controlla questo check

Invia una richiesta a http://tuodominio.com/ e cerca una risposta 301 o 308 con un header Location: che punta a https://. Il check fallisce se la versione HTTP ritorna 200 (il tuo sito è servito in doppio su testo in chiaro) o non ritorna nulla (la porta HTTP 80 non è in ascolto).

Perché è importante

Anche con HTTPS disponibile, la prima richiesta di un nuovo visitatore è quasi sempre in chiaro. Digita tuodominio.com e il browser prova prima HTTP. Senza un redirect, tre cose vanno storte contemporaneamente.

  • Due copie indicizzabili. Google tratta http://example.com/page e https://example.com/page come URL separati. Senza un 301 possono comparire entrambe nell’indice, dividendo backlink e segnale di ranking.
  • Finestra di downgrade. Quella prima richiesta in chiaro è il momento in cui avvengono gli attacchi in stile sslstrip su reti ostili. Il server deve rifiutare la conversazione e forzare l’upgrade.
  • Avvisi di mixed-content. Se la versione HTTP renderizza davvero, ogni URL di asset sulla pagina che non è protocol-relative viene scaricato via HTTP — e i browser moderni li bloccano in silenzio.

Il redirect è il ponte verso HSTS. Una volta attivato HSTS, i browser smettono di colpire HTTP del tutto alle visite di ritorno — ma il redirect deve comunque intercettare i primi visitatori e i crawler.

Come risolvere

Resta in ascolto sulla porta 80 e ritorna 301 all’equivalente HTTPS per ogni path:

nginx:

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;

  return 301 https://www.example.com$request_uri;
}

Apache (.htaccess):

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Caddy — automatico. Caddy reindirizza HTTP→HTTPS di default una volta che un blocco di sito ha un hostname idoneo a TLS.

Cloudflare — SSL/TLS → Edge Certificates → “Always Use HTTPS” → On.

Vercel / Netlify / Render / Dokku — il redirect HTTPS è attivo di default per qualsiasi progetto con dominio custom.

Procurati prima un certificato. Se non ne hai già uno, Let’s Encrypt + Certbot è gratuito e si rinnova automaticamente:

sudo certbot --nginx -d example.com -d www.example.com

Verifica tu stessocurl -sI http://example.com/ deve stampare HTTP/1.1 301 Moved Permanently e un header Location: https://.... Qualunque altra cosa (200, 404, connection refused) fa fallire il check.

Domande frequenti

301 o 308?

301 è lo standard. 308 (RFC 7538) è la stessa idea ma garantisce che metodo e body non vengano riscritti sul redirect, il che conta per le richieste POST. Per un sito tipico con traffico GET, 301 va bene ed è quello che usano di default tutti i CDN / WAF.

E il sottodominio API — stessa regola?

Sì. Qualsiasi sottodominio che serve traffico reale deve reindirizzare HTTP a HTTPS allo stesso modo. Se l’API è del tipo che accetta solo HTTPS (nessun fallback) puoi anche configurare il server per rifiutare del tutto la porta 80 con connection: close.

Devo reindirizzare a www o non-www allo stesso tempo?

Se stai unendo entrambe le decisioni in un solo redirect, sì — combinale così i visitatori atterrano sull’URL canonico dopo un hop, non due. Vedi mantieni corte le catene di redirect per la trappola di impilare redirect.

Fonti

Ultimo aggiornamento 2026-05-11