node.js - make - robots txt example
¿Cuál es la forma más inteligente de manejar robots.txt en Express? (4)
Actualmente estoy trabajando en una aplicación creada con Express (Node.js) y quiero saber cuál es la forma más inteligente de manejar diferentes robots.txt para diferentes entornos (desarrollo, producción).
Esto es lo que tengo ahora pero la solución no me convence, creo que está sucio:
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: es CoffeeScript)
Debería haber una mejor manera. ¿Como lo harias?
Gracias.
Crea
robots.txt
con el siguiente contenido:User-agent: * Disallow:
agréguelo a
public/
directory.
su robots.txt
estará disponible para rastreador en http://yoursite.com/robots.txt
Para elegir el archivo robots.txt dependiendo del entorno con una forma de middleware:
var env = process.env.NODE_ENV || ''development'';
if (env === ''development'' || env === ''qa'') {
app.use(function (req, res, next) {
if (''/robots.txt'' === req.url) {
res.type(''text/plain'');
res.send(''User-agent: */nDisallow: /'');
} else {
next();
}
});
}
Parece una buena forma.
Una alternativa, si desea poder editar robots.txt
como archivo normal, y posiblemente tener otros archivos que solo desea en modo de producción o desarrollo, sería usar dos directorios separados y activar uno u otro al inicio.
if (app.settings.env === ''production'') {
app.use(express[''static''](__dirname + ''/production''));
} else {
app.use(express[''static''](__dirname + ''/development''));
}
luego agrega 2 directorios con cada versión de robots.txt.
PROJECT DIR
development
robots.txt <-- dev version
production
robots.txt <-- more permissive prod version
Y puede seguir agregando más archivos en cualquier directorio y mantener su código más simple.
(lo siento, esto es javascript, no coffeescript)
Use una función de middleware. De esta forma, el robots.txt se manejará antes de cualquier sesión, cookieParser, etc.
app.use(''/robots.txt'', function (req, res, next) {
res.type(''text/plain'')
res.send("User-agent: */nDisallow: /");
});
Con express 4 app.get
ahora se maneja en el orden en que aparece, así que puedes usar eso:
app.get(''/robots.txt'', function (req, res) {
res.type(''text/plain'');
res.send("User-agent: */nDisallow: /");
});