Je travaille actuellement sur une application construite avec Express (Node.js) et je veux savoir quelle est la façon la plus intelligente de gérer différents robots.txt pour différents environnements (développement, production).
C'est ce que j'ai en ce moment mais je ne suis pas convaincu par la solution, je pense qu'elle est sale:
app.get '/robots.txt', (req, res) ->
res.set 'Content-Type', 'text/plain'
if app.settings.env == 'production'
res.send 'User-agent: *\nDisallow: /signin\nDisallow: /signup\nDisallow: /signout\nSitemap: /sitemap.xml'
else
res.send 'User-agent: *\nDisallow: /'
(NB: c'est CoffeeScript)
Il devrait y avoir une meilleure façon. Comment feriez-vous?
Je vous remercie.
Utilisez une fonction middleware. De cette façon, le fichier robots.txt sera traité avant toute session, cookieParser, etc.:
app.use('/robots.txt', function (req, res, next) {
res.type('text/plain')
res.send("User-agent: *\nDisallow: /");
});
Avec express 4 app.get
est maintenant traité dans l'ordre dans lequel il apparaît, vous pouvez donc simplement l'utiliser:
app.get('/robots.txt', function (req, res) {
res.type('text/plain');
res.send("User-agent: *\nDisallow: /");
});
Créer robots.txt
avec le contenu suivant:
User-agent: *
Disallow:
ajoutez-le à public/
répertoire.
votre robots.txt
sera disponible pour les robots d'exploration à http://yoursite.com/robots.txt
Ressemble à une manière correcte.
Une alternative, si vous souhaitez pouvoir modifier robots.txt
en tant que fichier normal, et éventuellement avoir d'autres fichiers que vous souhaitez uniquement en mode production ou développement serait d'utiliser 2 répertoires distincts et d'activer l'un ou l'autre au démarrage.
if (app.settings.env === 'production') {
app.use(express['static'](__dirname + '/production'));
} else {
app.use(express['static'](__dirname + '/development'));
}
puis vous ajoutez 2 répertoires avec chaque version de robots.txt.
PROJECT DIR
development
robots.txt <-- dev version
production
robots.txt <-- more permissive prod version
Et vous pouvez continuer à ajouter plus de fichiers dans l'un ou l'autre répertoire et garder votre code plus simple.
(désolé, c'est du javascript, pas du coffeescript)
C'est ce que j'ai fait sur mes routes d'index. Vous pouvez simplement écrire dans vos codes ce que je donne ci-dessous.
router.get('/', (req, res) =>
res.sendFile(__dirname + '/public/sitemap.xml')
)
router.get('/', (req, res) => {
res.sendFile(__dirname + '/public/robots.txt')
})