Si vous développez vos applications de manière un chouilla propre, vous devez avoir des environnements de développement et de production bien séparés.
Par exemple, l’API RefStats est disponible en production. Mais vous pouvez également visualiser l’interface qui me sers de test en développement.
Pour diverses raisons pratiques, je ne désire pas mettre d’identification sur cette version de développement.
Il n’y a de toute façon pas énormément de risques. La base de données y est remise à zéro particulièrement régulièrement et il est impossible de s’inscrire vu que c’est par le forum que cela se passe.
Par contre étant donné que les pages sont publiques, je ne tiens pas spécialement à ce que les moteurs de recherche ne les indexent.
Pour cela, je désire insérer un robots.txt. Mais uniquement en développement.
Inutile de s’embêter à faire un contrôleur, une action, une vue etc. Je vais utiliser une super fonctionnalité de Rails 2.3 : un metal.
Générons le en ligne de commande dans notre projet :
script/generate metal robots
Ceci nous crée un répertoire app/metal et un fichier robots.rb dedans.
Nous désirons que notre metal surveille l’url « /robots.txt » et que, si on est en développement, il nous retourne son contenu.
Et puisque c’est particulièrement simple, je vous le donne directement
require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails)
class Robots
def self.call(env)
if env["PATH_INFO"] == '/robots.txt'
[200, {"Content-Type" => "text"}, [ENV['RAILS_ENV'] == 'production' ? '' : "User-agent: *\r\nDisallow: /"]]
else
[404, {"Content-Type" => "text"}, [""]]
end
end
end
Ainsi dev.api.refstats.net/robots.txt interdit l’indexation.
Tandis que en production, l’indexation est autorisée puisque le robots.txt sera vide (à l’heure ou j’écris ces lignes, l’application n’est pas encore déployée car j’ai pas mal de commit en suspens. Notamment tout ce qui est de la gestion des comptes pro. Donc vous pouvez pas le voir).
Plutôt simple et efficace non ?
2 Responses to Rails: interdire l’accès aux crawlers dans l’environnement de développement
Antoine
septembre 3rd, 2009 at 16:04
Donc tu ne fais pas seulement du développement mais aussi un peu de référencement
Ads
Damien
septembre 3rd, 2009 at 16:29
Faire du dev en n’optimisant volontairement pas pour le référencement « parce que l’on est pas référenceur » serait totalement idiot.
Je ne suis pas référenceur car ce n’est pas ma spécialité.
Cela ne m’empêche pas d’avoir des notions de référencement et de les appliquer.
Tout métier du web dérive de toute façon sur ses accolytes. Un graphiste fera toujours un peu de dev. Un développeur un peu de référencement et inversement.
Quand on sait comment ne pas tout casser, autant macher le travail des autres (surtout quand, comme la, les autres c’est soi même).