Esplora le prove dell’audit

Sei casi HTTP locali, non una scansione del tuo sito. Le risposte prima e dopo sono testate localmente; indicizzazione Google, traffico e posizioni restano sconosciuti.

La priorità dipende dall’obiettivo dell’esempio, non da un punteggio SEO universale. Una risposta corretta non prova l’indicizzazione.

A01 · La pagina pubblica contiene noindex

Priorità: Alta

Osservazione
GET /launch restituisce 200 e un meta robots noindex. L’obiettivo è una pagina pubblica idonea alla ricerca.
Perché conta
La direttiva contraddice l’obiettivo. È presente, ma non sappiamo se Google l’abbia letta.
Azione proposta
Rimuovi la direttiva involontaria dal modello pubblico. Verifica anche intestazioni e HTML renderizzato.
Responsabile
Sviluppatore web
Verifica di accettazione
/fixed/launch restituisce 200 senza noindex. Ricontrolla la distribuzione reale e usa separatamente un’ispezione URL autorizzata.

Confermato nel caso locale; ambito in produzione e risultati di ricerca non verificati.

Prima

GET /launch
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Dopo

GET /fixed/launch
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/fixed/launch"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A02 · Robots impedisce di leggere l’esclusione

Priorità: Alta

Osservazione
robots.txt blocca /blocked/; /blocked/page contiene noindex. Si vuole escludere dalla ricerca, non limitare l’accesso.
Perché conta
Un crawler rispettoso delle regole non può leggere la direttiva. Robots non è autenticazione.
Azione proposta
Consenti la scansione della pagina mantenendo noindex. Proteggi i contenuti privati tramite autenticazione.
Responsabile
Responsabile della piattaforma
Verifica di accettazione
/fixed/blocked/page è fuori dal prefisso bloccato e mantiene noindex. Verifica regole reali e osservazioni successive separatamente.

Confermato nel caso locale; ambito in produzione e risultati di ricerca non verificati.

Prima

GET /robots.txt
HTTP 200
Content-Type: text/plain; charset=utf-8

User-agent: *
Disallow: /blocked/


────────

GET /blocked/page
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Dopo

GET /robots.txt
HTTP 200
Content-Type: text/plain; charset=utf-8

User-agent: *
Disallow: /blocked/


────────

GET /fixed/blocked/page
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><meta name="robots" content="noindex"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A03 · Il reindirizzamento permanente termina in errore

Priorità: Alta

Osservazione
/old-guide restituisce 301 verso /missing-guide, che risponde 404. /guide è il sostituto pertinente ipotizzato.
Perché conta
Il percorso non consegna il contenuto previsto. Un redirect non dimostra che la destinazione funzioni.
Azione proposta
Punta direttamente al sostituto pertinente e aggiorna i link interni. Non inviare tutte le pagine eliminate alla homepage.
Responsabile
Sviluppatore del routing
Verifica di accettazione
/fixed/old-guide restituisce una 301 seguita da /guide con 200 e il contenuto atteso. Controlla l’intera catena dopo il rilascio.

Confermato nel caso locale; ambito in produzione e risultati di ricerca non verificati.

Prima

GET /old-guide
HTTP 301
Location: /missing-guide



────────

GET /missing-guide
HTTP 404
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

Dopo

GET /fixed/old-guide
HTTP 301
Location: /guide



────────

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A04 · Canonical indica un contenuto estraneo

Priorità: Media

Osservazione
/variant dichiara /other-topic come canonical, pur duplicando /guide.
Perché conta
La preferenza contraddice la relazione tra contenuti. Non rivela la scelta canonica di Google.
Azione proposta
Conferma l’equivalenza e allinea canonical, link interni e sitemap con /guide. Mantieni distinte pagine con esigenze diverse.
Responsabile
Responsabile SEO e sviluppatore
Verifica di accettazione
/fixed/variant dichiara /guide e la destinazione funziona. Controlla separatamente la scelta di Google quando possibile.

Confermato nel caso locale; ambito in produzione e risultati di ricerca non verificati.

Prima

GET /variant
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/other-topic"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Dopo

GET /fixed/variant
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

A05 · La pagina assente restituisce successo

Priorità: Media

Osservazione
/gone risponde 200 con un titolo Not found. Non esiste un sostituto appropriato.
Perché conta
Contenuto di errore e stato di successo sono incoerenti: candidato soft 404, non classificazione Google osservata.
Azione proposta
Restituisci lo stato di risorsa assente e rimuovi i link interni obsoleti. Mantieni una pagina di errore utile.
Responsabile
Sviluppatore web
Verifica di accettazione
/fixed/gone risponde 404 con l’errore. Un’osservazione successiva in Search Console è una prova distinta.

Confermato nel caso locale; ambito in produzione e risultati di ricerca non verificati.

Prima

GET /gone
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

Dopo

GET /fixed/gone
HTTP 404
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title></head><body><h1>Not found</h1></body></html>

A06 · Il controllo funzionante non richiede correzioni speculative

Priorità: Nessuna modifica

Osservazione
/guide risponde 200, si dichiara canonical e non è bloccata da queste regole robots. La risposta non contiene noindex.
Perché conta
Questi controlli locali passano; qualità, rendering, scoperta, indicizzazione e posizioni non sono dimostrati.
Azione proposta
Registra il controllo superato. Indaga altri segnali solo quando una domanda concreta lo giustifica.
Responsabile
Revisore dell’audit
Verifica di accettazione
Le risposte prima e dopo sono identiche. Conserva la prova senza inventare difetti per aumentare il conteggio.

Confermato nel caso locale; ambito in produzione e risultati di ricerca non verificati.

Prima

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Dopo

GET /guide
HTTP 200
Content-Type: text/html; charset=utf-8

<!doctype html><html lang="en"><head><title>Local audit fixture</title><link rel="canonical" href="/guide"></head><body><h1>Guide</h1><p>Local practice content.</p></body></html>

Esegui i casi

Esegui i casi

Sei casi HTTP locali, non una scansione del tuo sito. Le risposte prima e dopo sono testate localmente; indicizzazione Google, traffico e posizioni restano sconosciuti.

Python 3.10 o successivo. Estrai il ZIP localmente. La verifica avvia un server temporaneo di loopback, testa tutti i casi, stampa JSON e termina. Non contatta siti esterni.

python3 audit_lab.py --verify

Per l’ispezione manuale, avvia il server con il comando seguente, apri gli URL locali e fermalo con Ctrl+C. Se 8765 è occupata, scegli un’altra porta locale.

python3 audit_lab.py --port 8765

http://127.0.0.1:8765/robots.txt

http://127.0.0.1:8765/launch

http://127.0.0.1:8765/fixed/launch

http://127.0.0.1:8765/blocked/page

http://127.0.0.1:8765/fixed/blocked/page

http://127.0.0.1:8765/old-guide

http://127.0.0.1:8765/missing-guide

http://127.0.0.1:8765/fixed/old-guide

http://127.0.0.1:8765/guide

http://127.0.0.1:8765/variant

http://127.0.0.1:8765/fixed/variant

http://127.0.0.1:8765/gone

http://127.0.0.1:8765/fixed/gone

http://127.0.0.1:8765/guide

http://127.0.0.1:8765/guide

Comandi e percorsi sono identificatori tecnici; il testo del rapporto è tradotto.

Esito dell’indicizzazione: sconosciuto

Esito dell’indicizzazione: sconosciuto