Robots.txt ed errore 500

La scorsa settimana mi è capitata una situazione decisamente insolita che credo sia utile segnalare dato che può causare spiacevoli disguidi nell'indicizzazione di un sito.

Avevo da poco creato un nuovo web su un server linux (webserver apache) ed il sito era praticamente vuoto ad accezione di una decina di pagine statiche (estensione .html).
Combinazione non avevo ancora creato il file robots.txt ma avevo già cominciato a segnalare il sito nei principali motori di ricerca tra cui Google e MSN.

Di norma non metto mai un sito online senza robots.txt. Anche se non sono necessarie direttive di esclusione l'abitudine è tale da avere sempre il file nella root pronto a portata di mano. In questo caso me ne sono completamente dimenticato.
Per chi non conoscesse il significato del file robots.txt consiglio la lettura di questo articolo pubblicato su HTML.it.

Passata una media di 24 ore ho analizzato i log del server per verificare l'attività sul sito degli spider dei motori.
Con mia grande sorpresa non c'era alcuna traccia di alcuno spider per alcuna delle pagine del sito, o meglio, c'era ma solo limitatamente al file robots.txt.

Nulla di cui preoccuparsi, è una situazione abbastanza normale. In genere uno spider sviluppato secondo gli standard (anche se parlare di standard non è propriamente corretto) è tenuto a leggere in primis il contenuto del robots.txt e poi può procedere tenendo a mente le direttive di esclusione (o inclusione) imposte dal file.
E se il file non esiste? Normalmente si tende a concludere che se non esiste il file non esistono parti del sito da escludere per cui il bot è autorizzato a proseguire indisturbato ovunque nel sito. Ma è veramente così? Non proprio, o meglio, non sempre.

Tornando al sito, dopo ben 3 giorni non c'era l'ombra di uno spider su nessuna delle pagine interne del sito. Una situazione, questa volta, assai anomala siccome, tra l'altro, il sito in questione godeva di alcuni link in ingresso molto interessanti. Non restava che analizzare nuovamente (e questa volta manualmente) il log alla ricerca di qualche cosa... ma cosa?

Con mio grande stupore ho scoperto che, in mancanza del file robots.txt, il server restituiva un errore HTTP 400 e a seguire HTTP 500.
In poche parole, con lo status 404 il server comunicava al bot che il file non esiste ma a seguire accodava inspiegabilmente anche un header di errore generico del server.

Andando ad analizzare il comportamento dei bot ecco la spiegazione che cercavo. Probabilmente in seguito all'errore 500, gli spider continuavano ciclicamente (con distanza di circa un'ora) a richiedere quel file rimanendo intrappolati in una sorta di limbo fin tanto che qualcuno non avesse comunicato loro informazioni meno disorientanti.

Ovviamente sono corso subito ai ripari caricando nella root del server un robots.txt nuovo di zecca con l'unico scopo di confermare il via libera ai bot. Ecco il contenuto del file.

User-agent: *
Disallow:

Inizialmente pensavo che questo strano comportamento fosse solo una prerogativa di Google ma, macinandomi il log, ho scoperto che anche altri bot erano rimasti intrappolati, MSN compreso.

La conclusione? Attenzione a non dimenticare di inserire un robots.txt nella root del vostro sito, anche se non desiderate escludere alcuna cartella.
Non solo, controllate periodicamente gli status restituiti dal vostro server nelle situazioni più comuni (file non trovato, accesso negato, autorizzazione richiesta, gateway errato, redirect temporaneo o permanente...).
Eviterete spiacevoli sorprese di comportamenti anomali da parte degli spider dei motori di ricerca.