401 Unauthorized: significato e impatto SEO

Il 401 Unauthorized è un codice di risposta HTTP che il server restituisce quando la richiesta manca di credenziali di autenticazione valide oppure le credenziali non superano la verifica. A differenza del 403 non è un rifiuto permanente: è un invito ad autenticarsi.

Cos'è il 401 Unauthorized

Il 401 Unauthorized è uno status HTTP del gruppo 4xx (errori client) che il server restituisce quando una richiesta richiede autenticazione ma non ne è stata fornita oppure le credenziali non hanno superato la verifica. Insieme allo status, il server invia di solito un header WWW-Authenticate che indica quale metodo di autenticazione usare.

Il nome «Unauthorized» è leggermente fuorviante: riguarda in realtà la mancanza di autenticazione, non di autorizzazione. Un nome più accurato sarebbe «Unauthenticated», ed è esattamente il significato codificato nella RFC 9110.

Il 401 non è un verdetto ma un invito: «Identificati e ti lasciamo entrare». Il server presume che una richiesta ripetuta con credenziali valide avrà successo. Per questo i browser mostrano automaticamente una finestra di login alla ricezione di un 401.

401 vs 403: la differenza

Entrambi i codici indicano un rifiuto d'accesso, ma per ragioni diverse:

Parametro401 Unauthorized403 Forbidden
Motivo del rifiutoAutenticazione non fornita o fallitaAccesso negato a prescindere dall'autorizzazione
Che cosa sa il server dell'utenteNiente — l'utente non si è identificatoL'utente è noto ma non ha i permessi richiesti
Risposta a «Chi sei?»Non hai risposto o hai risposto maleSei conosciuto ma qui non sei ammesso
Riprova con le credenzialiPuò funzionareNon servirà: servono permessi diversi
EsempioPagina protetta da password senza loginPagina solo-admin per un utente normale loggato
Usare male questi codici è un errore comune. Se sai per certo che l'utente è autenticato ma non ha i permessi richiesti, restituisci 403, non 401. Altrimenti il browser mostrerà di nuovo la finestra di login anche se l'utente è già loggato.

Impatto su SEO e indicizzazione

Quando Googlebot richiede un URL e riceve un 401, non può leggere il contenuto della pagina. Risultato: la pagina non viene indicizzata oppure esce dall'indice. Se il 401 compare su pagine pubbliche è un grave problema SEO:

  • La pagina perde posizioni ed esce dall'indice nel giro di poche settimane.
  • Il crawl budget viene sprecato: il crawler visita l'URL e non riceve nulla.
  • Il valore dei link verso le pagine bloccate non viene passato oltre.
  • Gli errori compariranno in Google Search Console sotto Copertura → Pagine escluse.
Google non penalizza i siti per il 401 sulle sezioni chiuse (aree utente, CMS, API). Il problema nasce solo quando il 401 impedisce l'indicizzazione di pagine che dovrebbero essere pubblicamente accessibili.
4xx

errori client

Gruppo di errori HTTP lato richiesta

401

autenticati

Chiede al client di fornire le credenziali

403

vietato

Le credenziali non basteranno: manca il permesso

0%

contenuto per Googlebot

Con il 401 la pagina non viene indicizzata

Cause comuni di 401 su pagine pubbliche

  1. HTTP Basic Auth sull'intero sito o su una sezione. Spesso configurato sullo staging e poi dimenticato prima del lancio, oppure applicato per errore all'ambiente di produzione.
  2. CDN o reverse proxy mal configurati. Il livello intermedio richiede un token o una firma che Googlebot non ha.
  3. Token API scaduti. Le pagine generate via API con una chiave scaduta restituiscono 401 invece del contenuto.
  4. Errore nel codice dell'applicazione. Un middleware o un guard richiede per errore l'autenticazione dove non dovrebbe.
  5. WordPress o altro CMS dopo un aggiornamento. I plugin di protezione dei contenuti possono cambiare le impostazioni durante un update.
Uno scenario particolarmente pericoloso è l'HTTP Basic Auth su uno staging aperto ai crawler. Googlebot a volte scopre i domini di staging tramite link casuali. Proteggi lo staging con robots.txt o una allowlist di IP — non con il solo Basic Auth senza robots.txt.

Come correggere il 401 su pagine pubbliche

Flusso di diagnosi e risoluzione:

  1. Trova gli URL problematici via Google Search Console → Copertura oppure con un crawler (Screaming Frog).
  2. Controlla il codice di risposta con curl: conferma che il problema sia riproducibile.
  3. Individua dove è configurata l'autenticazione: server (Apache/Nginx), CDN o middleware dell'applicazione.
  4. Rimuovi il requisito di autenticazione dagli URL pubblici oppure aggiungi un'eccezione per loro.
  5. Se lo staging va protetto, aggiungi robots.txt con Disallow: / o limita l'accesso per IP.
bash
# Check response code
curl -o /dev/null -s -w "%{http_code}\n" https://example.com/page
# Expected: 200 (or 301/302)
# If you see 401 — there is a problem

# Check with Basic Auth
curl -u login:password -o /dev/null -s -w "%{http_code}\n" https://example.com/page
apache
# Apache — protect a directory while keeping public pages open
<Directory /var/www/html/admin>
    AuthType Basic
    AuthName "Admin Area"
    AuthUserFile /etc/.htpasswd
    Require valid-user
</Directory>

# Public pages are NOT touched — accessible without authentication
nginx
# Nginx — Basic Auth for /admin only, public pages remain open
server {
    # Public section
    location / {
        try_files $uri $uri/ =404;
    }

    # Protected section
    location /admin/ {
        auth_basic "Admin Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}
typescript
// Next.js — API route with correct 401
import { NextRequest, NextResponse } from 'next/server';

export async function GET(request: NextRequest) {
  const token = request.headers.get('authorization');

  if (!token || !isValidToken(token)) {
    return NextResponse.json(
      { error: 'Authentication required' },
      {
        status: 401,
        headers: { 'WWW-Authenticate': 'Bearer realm="API"' },
      }
    );
  }

  return NextResponse.json({ data: 'protected content' });
}

Trovato un 401 su pagine pubbliche?

Raccontaci il tuo progetto: faremo un audit SEO tecnico e individueremo tutti i problemi che bloccano il crawler.

Contattaci

FAQ

Googlebot ha ricevuto un 401: la pagina uscirà dall'indice?
Sì, gradualmente. Se Googlebot riceve costantemente 401 su un URL prima accessibile, inizierà ad abbassare la priorità di scansione e alla fine escluderà la pagina dall'indice. Il processo può richiedere qualche settimana. Più la pagina è autorevole, più a lungo Google aspetterà e ricontrollerà.
Posso usare il 401 sullo staging per evitare l'indicizzazione?
Funziona, ma esistono approcci più affidabili: aggiungi robots.txt con Disallow: / oppure blocca lo staging per IP. Il 401 da solo non garantisce protezione completa: Googlebot a volte scavalca il Basic Auth e segue i link. Best practice: robots.txt più Basic Auth insieme.
In che modo il 401 differisce dal 403 dal punto di vista SEO?
Ai fini dell'indicizzazione l'effetto è identico: Googlebot non riceve contenuto e non può indicizzare la pagina. La differenza è semantica: 401 significa «autenticati», 403 significa «non hai il permesso nemmeno autenticandoti». Per la SEO conta che entrambi i codici bloccano l'indicizzazione di contenuti pubblici.
Quanto velocemente Google capirà che il 401 è stato corretto?
Alla prossima scansione di quell'URL. Se la pagina è importante e aveva traffico, Google la ricontrollerà entro pochi giorni. Puoi accelerare con Controllo URL in Google Search Console → Richiedi indicizzazione.
L'header WWW-Authenticate è obbligatorio con il 401?
Secondo la RFC 9110, sì. Senza, un 401 è tecnicamente non conforme. Browser e client si aspettano questo header per sapere quale metodo di autenticazione è supportato. Nella pratica molte API restituiscono 401 senza e nulla si rompe, ma seguire lo standard è l'approccio corretto.
Devo aggiungere gli URL in 401 al disavow o rimuoverli da Search Console?
No. Il disavow è uno strumento per lo spam di link, non per i codici HTTP. Corretto il 401, Google aggiornerà lo stato alla prossima scansione. Non serve rimuovere manualmente gli URL da Search Console.