[英]How to serve robots.txt with Perl Dancer
我正在嘗試使用Perl Dancer Web框架提供robots.txt。 我認為有一個只返回文本的路徑會起作用,但它似乎將它包裝在html
和body
標簽中。 我假設這不會被爬蟲正確解釋為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.