Подтвердить что ты не робот

Каков самый умный способ обработки robots.txt в Express?

В настоящее время я работаю над приложением, созданным с помощью Express (Node.js), и я хочу знать, что является самым умным способом обработки различных файлов robots.txt для разных сред (разработка, производство).

Это то, что я имею прямо сейчас, но я не уверен в решении, я думаю, что это грязно:

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: это CoffeeScript)

Должен быть лучший способ. Как вы это сделаете?

Спасибо.

4b9b3361

Ответ 1

Используйте функцию промежуточного программного обеспечения. Таким образом, robots.txt будет обработан перед любой сессией, cookieParser и т.д.

app.use('/robots.txt', function (req, res, next) {
    res.type('text/plain')
    res.send("User-agent: *\nDisallow: /");
});

С express 4 app.get теперь обрабатывается в том порядке, в котором он появляется, поэтому вы можете просто использовать это:

app.get('/robots.txt', function (req, res) {
    res.type('text/plain');
    res.send("User-agent: *\nDisallow: /");
});

Ответ 2

  • Создайте robots.txt со следующим содержимым:

    User-agent: *
    Disallow:
    
  • добавьте его в каталог public/.

ваш robots.txt будет доступен для искателя в http://yoursite.com/robots.txt

Ответ 3

Похоже, хорошо.

Альтернативой, если вы хотите иметь возможность редактировать robots.txt в качестве обычного файла и, возможно, иметь другие файлы, которые вы хотите только в режиме производства или разработки, - это использовать 2 отдельных каталога и активировать один или другой при запуске.

if (app.settings.env === 'production') {
  app.use(express['static'](__dirname + '/production'));
} else {
  app.use(express['static'](__dirname + '/development'));
}

то вы добавляете 2 каталога с каждой версией robots.txt.

PROJECT DIR
    development
        robots.txt  <-- dev version
    production
        robots.txt  <-- more permissive prod version

И вы можете продолжать добавлять больше файлов в любой каталог и упростить свой код.

(извините, это javascript, а не coffeescript)

Ответ 4

Это то, что я сделал на своих индексных маршрутах. Вы можете просто записать в свои коды то, что я сделал ниже.

router.get('/', (req, res) =>
    res.sendFile(__dirname + '/public/sitemap.xml')
)

router.get('/', (req, res) => {
    res.sendFile(__dirname + '/public/robots.txt')
})

Ответ 5

Для выбора robots.txt в зависимости от среды со способом промежуточного слоя:

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();
    }
  });
}