Gestione dinamica del file Robots.txt


I più conosceranno l'importanza e l'utilizzo del robots.txt. Si tratta di un file necessario per indicare agli spider dei motori di ricerca cosa indicizzare e cosa non.
Il file robots.txt nasce esclusivamente per indicare le aree di un sito da non indicizzare. Da circa due anni è possibile indicare all'interno di questo file di testo l'indirizzo della sitemap XML e quindi un indicazione di ciò che vogliamo sia recensito dai motori di ricerca. Qui trovate le specifiche, sotto un breve esempio:

#nessun user agent deve indicizzare il contenuto della directory admin
User-agent: *
Disallow: /admin/

In alcune circostanza può essere utile valorizzare dinamicamente il contenuto del robots.txt, sicuramente non è un'attività comune ma è bene sapere che si può fare.

Quando
Per esempio quando un sito è raggiungibile via indirizzo IP e tramite il nome a dominio. Capita che erroneamente alcune pagine possano essere linkate con l'aggiunta del IP e i motori di ricerca seguano e indicizzino anche questa versione dello stesso sito. A questo punto il sito indicizzato due volte e quindi duplicato ed il file robots è l'unico mezzo che abbiamo a disposizione per domare gli spider.
Come
Prendo come esempio due situazioni che rappresentano quasi la totalità degli web server: Apache e Microsoft IIS (Windows).
Se lavorate su Apache potete agilmente replicare l'esempio, se vi trovate in ambiente Windows (IIS) mi dispiace ma non è detto che possiate applicare quanto riportato.
Valorizzazione dinamica del robots.txt su Apache
Lavorando con Apache come web server abbiamo ben due soluzioni da implementere modificando in entrambi i casi il file .htaccess per applicare l'URL rewrite in caso di richiesta del file robots.txt.
La prima prevede dei blocchi decisionali all'interno dell'.htaccess e a secondo dell'esito la restituzione di un file robots personalizzato con le corrette restrizioni:

RewriteEngine on
RewriteCond %{HTTP_HOST} !www.mysite.com [NC]
RewriteRule ^robots.txt new_robots.txt

Nel secondo caso applichiamo direttamente la sostituzione del file robots.txt delegando ad uno script PHP la gestione delle regole per l'indicizzazione del sito duplicato.

# regola URL rewrite da inserire nel file .htaccess
RewriteEngine on
RewriteRule ^robots.txt robots.php

<?php
// codice del file robots.php
header('Content-type: text/plain');
$host  = $_SERVER['HTTP_HOST'];

if ($host == "www.mysite.com"){
   echo "User-agent: *\n";
   echo "Disallow: /stats/n\";
   echo "Disallow: /admin/\n";
   echo "Sitemap: http://www.mysite.com/sitemap.xml \n";
}else{
  echo "User-agent: *\n";
  echo "Disallow: / n\";
}
?>

Valorizzazione dinamica del robots.txt su IIS + Windows
Con questo tipo di configurazione del server siete vincolati alla possibilità di installare un filtro isapi per applicare le regole del rewrite (e.s.: www.isapirewrite.com). Per far ciò è indispensabile lavorare con un server dedicato o un VPS, in caso contrario non è possibile applcare la gestione dinamica del file robots.txt in quanto verrebbe meno la possibilità di indirizzare ad un linguaggio di programmazione server side la possibilità di dettare le regole di indicizzazione.

# regola URL rewrite da inserire nel file httpd.ini di Isapi Rewrite
RewriteRule /robots.txt /robots.asp

<%
' codice da utilizzare nel file robots.asp per gestire dinamicamente le regole di indicizzazione in base all'hostname richiesto
Response.ContentType = "text/plain"
hostname =  Request.ServerVariables("SERVER_NAME")

if hostname = "www.mysite.com" then
  response.write "User-agent: *"  & vbCrLf
  response.write "Disallow: /stats/"  & vbCrLf
  response.write "Disallow: /admin/"  & vbCrLf
  response.write "Sitemap: http://www.mysite.com/sitemap.xml" 
else 
  response.write "User-Agent: *"  & vbCrLf
  response.write "Disallow: /"
end if
%>

Per chi utilizza la soluzione IIS + Isapi Rewrite consiglio di fare attenzione alla presenza di altri siti pubblicati sullo stesso server. Il file httpd.ini, al contrario dell' .htaccess, è unico per l'intero web server e le regole inserite al suo interno vengono considerate per le richieste HTTP a tutti i siti ospitati.

Ci sono altri casi un cui può essere utile gestire dinamicamente il contenuto del file robots.txt, a voi individuarli ed eventualmente indicarli qui in un commento.

Tag: (1) (1) (11)

Scritto da Simone Rinzivillo il 02.10.08
| Comments (0) | TrackBacks (0)

TrackBack

TrackBack URL for this entry:
http://www.simonerinzivillo.it/mt4/mt-tb.cgi/27

Post a comment

Chi sono

Questo box mi fa sentire stretto per raccontare in breve chi sono, non che io abbia tante cose da scrivere ma lo spazio sembra veramente poco.
Lavoro nell'informatica dal 2000. Ho iniziato come analista programmatore prestando consulenza presso TSF S.p.A. nello sviluppo di sistemi informatici per il Gruppo Ferrovie dello Stato.
Ho lavorato in Ad Maiora come Project Manager e SEO specialist.
Oggi curo la visibilità online dei clienti di Mamadigital dove ricopro l'incarico di Technical Manager. Il blog nasce dalle ceneri del ban di Google e peggio di così non può essere per un SEO. Ho deciso di avviarlo spiegando proprio cosa ha portato a questa situazione.
Simone Rinzivillo su LinkedIn