Hantering av robots.txt-regler i Polopoly

2009-03-25 13:29 av Niklas Olsson

Jag tänkte berätta hur man kan gå tillväga för att underlätta hanteringen av robots.txt-regler, och på samma gång få möjligheten att delegera underhållet av dem till personer som arbetar närmare källan av innehållet. Vi hade länge denna funktion i vår ”back log” och när tiden var inne tog vi in den i utvecklingsetappen och resultatet blev lyckat.

Fördelarna med denna lösning är följande

  • Driftspersonal behöver inte längre blandas in när ändringar skall göras. Detta gör att driftspersonalen får mer tid till annat.
  • Ledtiderna vid ändringar av reglerna minimeras eftersom redaktören själv kan ändra dessa.
  • Lösningen ger möjlighet till att koppla ihop olika robots.txt-regler med olika site alias på en och samma site, så att man kan välja olika regler för olika alias. Detta är bra om man har url:er som man inte vill kommunicera ut men som är bra att ha för de som utvecklar och driftar polopolyinstallationen.
  • Reglerna ligger i egna innehållsobjekt vilket gör att de kan återanvändas av flera olika siter.

Lösningens olika komponenter

  • Robots.txt-reglerna.
  • Mappningen mellan site alias och reglerna.
  • Servlet som hämtar robots.txt-reglerna beroende på efterfrågad url.
  • Filterhantering som mappar allt som går mot /robots.txt till ovannämnda servlet.

Lite mer ingående för den intresserade

Robots.txt

Reglerna för sökmotorerna
Robots.txt-reglerna är uppbyggda av en enkel indatamall med en titel av typen p.ContentName och ett textfält av typen p.TextArea där reglerna kan matas in.  Policyn har metoder för att hämta ut titeln och reglerna.

Robots.txt

Mappning av sitealias och robots.txt-regler
Mappningarna görs via en annan indatamall som innehåller följande komponenter:

  • En innehållsväljare av typen p.ContentSingleSelect som används för att peka ut den robots.txt-resurs som ska användas för samtliga alias för aktuell site som inte har en specifik mappning mot en annan robots.txt-resurs.
  • Ett fält av typen p.Duplicator som i sig innehåller två typer av fält. Ett fält av typen p.Text som tar ett sitealias (d.v.s. en url) och ett fält av typen p.ContentSingleSelect där man väljer vilken robots.txt-resurs som ska mappas mot det aktuella sitealiaset.

Policyn innehåller en publik metod som hämtar upp robots.txt-reglerna beroende på givet site alias. Hittas inte reglerna för detta site alias returneras defaultreglerna istället.

Servlet och servletmappning
Servleten använder sig av polopolys RequestPreparator för att hämta upp den aktuella sitepolicyn. Sitepolicyn används sedan i sin tur för att hämta rotinnehållspolicyn för siten där mappningarna mellan sitealias och regler finns. Från den innehållspolicyn hämtas reglerna upp och skrivs ut i servletresponsen.

Servletmappningen sker i web.xml och ser till att alla anrop till /robots.txt mappas till servleten som i sin tur genererar rätt regler till rätt url.

En tråd har skapats i forumet under ”Mallutveckling” för de som vill diskutera och få mer detaljer om denna funktionalitet

Vi rekommenderar också:

Taggar: , , , , ,

Skriv en kommentar