簡體   English   中英

如何使用Perl Dancer提供robots.txt

[英]How to serve robots.txt with Perl Dancer

我正在嘗試使用Perl Dancer Web框架提供robots.txt。 我認為有一個只返回文本的路徑會起作用,但它似乎將它包裝在htmlbody標簽中。 我假設這不會被爬蟲正確解釋為robots.txt文件。

知道如何正確地做到這一點?

以下是我編寫路線的方法:

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

提前致謝!

是什么讓你認為它被包裝在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: /

我敢打賭,你正在使用一個使用渲染器的客戶端來查看它,該渲染器會在看到text/html的Content-Type標頭時添加這些渲染器。 將內容類型設置為text/plain會更合適,並且在用於查看文件的渲染器中看起來更好。

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

但最終,它不應該產生任何影響。

發送robots.txt的另一個選擇是為其定義路由,而是將實際的robots.txt文件放入主Dancer app目錄下的public/子目錄中。 然后,Dancer會自動將其作為常規文件提供,而不會將其傳遞給路徑處理程序,模板等。

您將以text/html (默認值)提供響應。 這些元素由瀏覽器插入,作為解析HTML的正常過程的一部分(您正在查看實時DOM的表示而不是源代碼)。

設置正確的內容類型標頭。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM