繁体   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