Oct
2
2008

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.

Related Posts

About the Author: Simone Rinzivillo

2 Commenti + Add Comment

Lascia un commento

About Me

Lavoro nell'informatica dal 2000. Ho iniziato come consulente analista programmatore 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.