3

Perl Dancer Web フレームワークを使用して robots.txt を提供しようとしています。テキストを返すだけのルートがあればうまくいくと思いましたが、htmlandbodyタグでラップしているようです。これは、クローラーによって robots.txt ファイルとして正しく解釈されないと想定しています。

これを適切に行う方法はありますか?

ルートを書く方法は次のとおりです。

get '/robots.txt' => sub { return "User-agent: *\nDisallow: /"; };

前もって感謝します!

4

3 に答える 3

12

HTML 要素と BODY 要素でラップされていると思う理由は何ですか?

use Dancer;

get '/robots.txt' => sub {
   return "User-agent: *\nDisallow: /\n";
};

dance;

出力:

>lwp-request -e http://127.0.0.1:3000/robots.txt
200 OK
Server: Perl Dancer 1.3112
Content-Length: 26
Content-Type: text/html
Client-Date: Mon, 29 Apr 2013 05:05:32 GMT
Client-Peer: 127.0.0.1:3000
Client-Response-Num: 1
X-Powered-By: Perl Dancer 1.3112

User-agent: *
Disallow: /

の Content-Type ヘッダーを表示するときにそれらを追加するレンダラーを使用するクライアントで表示していると思いますtext/html。コンテンツ タイプを に設定するtext/plainと、より適切になり、ファイルの表示に使用しているレンダラーで見栄えが良くなります。

get '/robots.txt' => sub {
   content_type 'text/plain';
   return "User-agent: *\nDisallow: /\n";
};

ただし、最終的には、何の影響も与えないはずです。

于 2013-04-29T05:06:31.747 に答える
6

robots.txt送信するためのもう 1 つのオプションは、ルートを定義せに、実際のrobots.txtファイルをpublic/メインの Dancer アプリ ディレクトリの下のサブディレクトリに配置することです。その後、Dancer は、ルート ハンドラやテンプレートなどを介して渡すことなく、通常のファイルとして自動的に提供します。

于 2013-04-29T08:30:17.283 に答える
3

応答をtext/html(デフォルト) として提供しています。要素は、HTML を解析する通常のプロセスの一部としてブラウザーによって挿入されています (そして、ソース コードではなく、ライブ DOM の表現を見ています)。

正しいcontent-typeヘッダーを設定してください。

get '/robots.txt' => sub {
  content_type "text/plain";
  return "User-agent: *\nDisallow: /";
};
于 2013-04-29T05:11:23.503 に答える