79

私は現在、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: /'

(注: それは CoffeeScript です)

もっと良い方法があるはずです。どのようにしますか?

ありがとうございました。

4

7 に答える 7

20

1.robots.txt次の内容で作成します。

User-agent: *
Disallow: # your rules here

2. ディレクトリに追加しpublic/ます。

3. コードにまだ存在しない場合は、以下を追加します。

app.use(express.static('public'))

あなたrobots.txtはどのクローラーでも利用できますhttp://yoursite.com/robots.txt

于 2016-11-05T13:39:32.090 に答える
2

大丈夫なようです。

別の方法として、通常のファイルとして編集できるようにしrobots.txt、本番モードまたは開発モードでのみ必要な他のファイルがある可能性がある場合は、2 つの別個のディレクトリを使用し、起動時にいずれかをアクティブにすることです。

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

次に、robots.txt の各バージョンに 2 つのディレクトリを追加します。

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

また、どちらのディレクトリにもファイルを追加し続けることができ、コードをよりシンプルに保つことができます。

(申し訳ありませんが、これはコーヒー スクリプトではなく JavaScript です)

于 2013-02-27T19:55:22.420 に答える
0

ミドルウェアの方法で環境に応じて 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();
    }
  });
}
于 2014-05-31T05:28:35.240 に答える