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.
401 vs 403: la differenza
Entrambi i codici indicano un rifiuto d'accesso, ma per ragioni diverse:
| Parametro | 401 Unauthorized | 403 Forbidden |
|---|---|---|
| Motivo del rifiuto | Autenticazione non fornita o fallita | Accesso negato a prescindere dall'autorizzazione |
| Che cosa sa il server dell'utente | Niente — l'utente non si è identificato | L'utente è noto ma non ha i permessi richiesti |
| Risposta a «Chi sei?» | Non hai risposto o hai risposto male | Sei conosciuto ma qui non sei ammesso |
| Riprova con le credenziali | Può funzionare | Non servirà: servono permessi diversi |
| Esempio | Pagina protetta da password senza login | Pagina solo-admin per un utente normale 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.
errori client
Gruppo di errori HTTP lato richiesta
autenticati
Chiede al client di fornire le credenziali
vietato
Le credenziali non basteranno: manca il permesso
contenuto per Googlebot
Con il 401 la pagina non viene indicizzata
Cause comuni di 401 su pagine pubbliche
- 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.
- CDN o reverse proxy mal configurati. Il livello intermedio richiede un token o una firma che Googlebot non ha.
- Token API scaduti. Le pagine generate via API con una chiave scaduta restituiscono 401 invece del contenuto.
- Errore nel codice dell'applicazione. Un middleware o un guard richiede per errore l'autenticazione dove non dovrebbe.
- WordPress o altro CMS dopo un aggiornamento. I plugin di protezione dei contenuti possono cambiare le impostazioni durante un update.
Come correggere il 401 su pagine pubbliche
Flusso di diagnosi e risoluzione:
- Trova gli URL problematici via Google Search Console → Copertura oppure con un crawler (Screaming Frog).
- Controlla il codice di risposta con curl: conferma che il problema sia riproducibile.
- Individua dove è configurata l'autenticazione: server (Apache/Nginx), CDN o middleware dell'applicazione.
- Rimuovi il requisito di autenticazione dagli URL pubblici oppure aggiungi un'eccezione per loro.
- Se lo staging va protetto, aggiungi robots.txt con
Disallow: /o limita l'accesso per IP.
# 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 — 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 — 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;
}
}// 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.
FAQ
Googlebot ha ricevuto un 401: la pagina uscirà dall'indice?
Posso usare il 401 sullo staging per evitare l'indicizzazione?
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.