410 Gone: pagina eliminata definitivamente

Il 410 Gone è un codice di risposta HTTP restituito quando il server conosce la route ma la risorsa è stata eliminata deliberatamente e in modo permanente. A differenza del 404, il 410 manda un segnale esplicito: il server è a conoscenza di questo URL e conferma che il contenuto è stato rimosso intenzionalmente e non tornerà mai. I motori di ricerca rimuovono queste pagine dall'indice molto più rapidamente.

Cos'è il 410 Gone

Il 410 Gone è uno status HTTP del gruppo 4xx (errori client) che il server restituisce quando una risorsa richiesta è stata eliminata deliberatamente e in modo permanente. Il punto chiave: il server conosce questa route. Non è «pagina non trovata» ma «la pagina esisteva, è stata rimossa deliberatamente e non tornerà». È esattamente questo che distingue il 410 dal 404.

Secondo la RFC 9110, il 410 indica che la risorsa non è più disponibile e che questa condizione è probabilmente permanente. I motori di ricerca trattano il 410 come segnale univoco di de-indicizzare la pagina: senza controlli ripetuti né attese.

Google rimuove dall'indice le pagine con status 410 più velocemente di quelle con 404. Con il 404 il crawler ricontrolla periodicamente l'URL (nel caso la pagina torni). Con il 410 capisce subito che la pagina è sparita per sempre e smette di scansionarla.

410 vs 404: la differenza

Entrambi i codici significano che all'URL richiesto non c'è pagina. La differenza sta in che cosa il server comunica sul motivo:

  • 404 Not Found: risorsa non trovata. Il server non sa se esisteva prima o se tornerà. Il crawler ricontrollerà periodicamente l'URL, per prudenza.
  • 410 Gone: il server conferma esplicitamente — la risorsa esisteva, è stata eliminata intenzionalmente e la cosa è permanente. Il crawler smette di ricontrollare e de-indicizza la pagina più in fretta.

Nella pratica il 404 indica quasi sempre anch'esso una cancellazione, ma il motore di ricerca non lo sa. Il 410 elimina l'ambiguità: il server comunica esplicitamente il fatto e la causa dell'assenza del contenuto.

Non usare il 410 per pagine che potrebbero tornare (per esempio prodotti temporaneamente non pubblicati o articoli in revisione). Per l'indisponibilità temporanea usa 404 o 503. Il 410 è solo per l'eliminazione definitiva.

410 o 301: che cosa scegliere

È la domanda più comune quando si eliminano pagine. La scelta dipende dall'esistenza di un'alternativa adatta per il redirect:

  • Usa il 301 se la pagina si è spostata o esiste un'alternativa tematicamente pertinente. Un 301 trasferisce al nuovo URL il valore dei link accumulato, preservando posizioni e traffico.
  • Usa il 410 se la pagina è eliminata definitivamente e non esiste un'alternativa adeguata. Reindirizzare a un URL irrilevante (per esempio la homepage) solo per conservare il valore è una cattiva pratica. Google lo capisce e non accredita quel valore.
  • Usa il 404 se non sei certo dell'intento o se la pagina potrebbe teoricamente tornare.
I redirect 301 di massa verso la homepage al posto del 410 sono un errore comune. Google li chiama «soft 404» e prima o poi smette di considerarli: il segnale resta quello di una cancellazione. Meglio restituire un onesto 410 fin dall'inizio.

Quando usare il 410

Il 410 è la scelta giusta nelle seguenti situazioni:

  • Eliminazione di prodotti a catalogo senza alternative e che non torneranno disponibili.
  • Depubblicazione di articoli, news o pagine promo scadute.
  • Rimozione di contenuti generati dagli utenti (profili, post) su richiesta dell'utente o per GDPR.
  • Pulizia di pagine spam o duplicate che non devono più essere indicizzate.
  • Eliminazione di sezioni durante la ristrutturazione del sito quando le pagine non hanno alternative tematiche vicine.
  • Disattivazione di endpoint API di vecchie versioni non più supportate.

Serve una pagina personalizzata per il 410

Il 410 è innanzitutto un segnale per i crawler di ricerca, non per gli utenti. Ma se un utente reale atterra su un URL del genere (per esempio da un vecchio bookmark o da un link esterno), vedrà una risposta vuota o un errore nudo del browser, senza il tuo brand.

Raccomandazioni per il template della pagina 410:

  • Per le risorse tecniche (API, endpoint interni) non serve template: basta il codice di stato.
  • Per le pagine rivolte agli utenti aggiungi un template minimo: spiega che la pagina è stata eliminata e offri un link alla homepage o alla ricerca interna. Puoi riutilizzare il template della pagina 404.
  • Non reindirizzare dal 410 al 404. Restituisci 410 con un tuo HTML: è semanticamente corretto.
Nella maggior parte dei casi basta un unico template «pagina inesistente», che può servire sia il 404 sia il 410. L'unica differenza è il codice di stato HTTP restituito al crawler.

Come configurare il 410

Esempi per le piattaforme più diffuse:

apache
# Apache — .htaccess
# Single specific URL:
Redirect 410 /old-promo

# Multiple URLs at once:
Redirect 410 /news/2021/event
Redirect 410 /sale/black-friday-2022

# All pages in a section:
RewriteEngine On
RewriteRule ^old-blog/.*$ - [G,L]
nginx
# Nginx
server {
    # Single URL:
    location = /old-promo {
        return 410;
    }

    # All pages in a section:
    location ^~ /old-blog/ {
        return 410;
    }
}
typescript
// Next.js — middleware.ts (precise 410 for specific URLs)
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

const GONE_PATHS = new Set([
  '/old-promo',
  '/news/2021/event',
  '/sale/black-friday-2022',
]);

export function middleware(request: NextRequest) {
  const pathname = request.nextUrl.pathname;
  if (GONE_PATHS.has(pathname)) {
    return new NextResponse('Gone', { status: 410 });
  }
}

export const config = {
  matcher: ['/old-promo', '/news/:path*', '/sale/:path*'],
};
php
<?php
// PHP — explicit 410 with page body
http_response_code(410);
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html lang="en">
<head><title>Page Gone</title></head>
<body>
  <h1>410 Gone</h1>
  <p>This page has been permanently deleted and no longer exists.</p>
  <a href="/">Back to homepage</a>
</body>
</html>

Dopo la configurazione, verifica lo status con Google Search Console (Controllo URL) oppure con curl:

bash
curl -o /dev/null -s -w "%{http_code}\n" https://example.com/old-promo
# Expected output: 410

FAQ

Perché il 410 è meglio del 404 dal punto di vista SEO?
Il 410 dice esplicitamente al motore di ricerca che la pagina è stata eliminata deliberatamente e per sempre. Google la de-indicizza più in fretta che con il 404 e non spreca crawl budget in controlli ripetuti. Il 404 lascia ambiguità: il crawler torna periodicamente, nell'eventualità che la pagina ricompaia.
Devo aggiornare la sitemap dopo aver configurato i 410?
Sì, rimuovi dalla sitemap gli URL che restituiscono 410. La sitemap deve contenere solo le pagine attuali e indicizzabili. Lasciare URL eliminati nella sitemap segnala una scarsa manutenzione del sito.
E se link esterni puntano alla pagina eliminata?
Se i link sono preziosi (donatori autorevoli), configura un 301 verso l'alternativa più pertinente. Se non esiste alternativa o i link sono di poco valore, un onesto 410 è preferibile a un redirect inutile verso la homepage.
Posso partire con il 404 e passare poi al 410?
Sì, è perfettamente valido. Google elaborerà il 410 alla prossima scansione, accelerando la de-indicizzazione. Passare da 404 a 410 è un miglioramento, non un errore.
Serve l'header Retry-After con il 410?
No. Retry-After ha senso con il 503 (indisponibilità temporanea). Il 410 è una risposta definitiva — «questa risorsa è sparita e non tornerà» — quindi suggerire un tempo di retry non ha significato.