2013-04-29 2 views
3

Perl Dancer 웹 프레임 워크를 사용하여 robots.txt를 제공하려고합니다. 방금 텍스트를 반환하는 경로가 있다고 생각했지만 htmlbody 태그로 묶는 것으로 보입니다. 나는 이것을 크롤러가 robots.txt 파일로 제대로 해석하지 않을 것이라고 가정하고 있습니다.Perl Dancer로 robots.txt를 제공하는 방법

어떻게하면 제대로 할 수 있습니까? 사전에

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

감사 : 여기

내가 쓴 경로가 어떻게!

답변

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:/

난 당신이 text/html의 Content-Type 헤더를보고에 사람들을 추가하는 렌더러를 사용하는 클라이언트와 함께 vieweing있어 내기. 콘텐츠 유형을 text/plain으로 설정하면 파일을 보는 데 사용하는 렌더러에서 더 적합 해 보입니다.

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

궁극적으로, 그것은 아무런 효과가 없어야합니다.

+0

아, 맞습니다. 그건 내 실수였습니다. 답변 해주셔서 감사합니다! – Justin

3

응답을 text/html (기본값)으로 제공합니다. HTML을 파싱하는 일반적인 프로세스의 일부로 요소가 브라우저에 삽입됩니다. 소스 코드가 아니라 실제 DOM 표현이 표시됩니다.

올바른 content-type 헤더를 설정하십시오.

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

robots.txt를 보내는 다른 옵션은 로하지 그것을위한 경로를 정의하고 대신 메인 댄서 응용 프로그램 디렉토리 아래 public/ 하위 디렉토리에 실제 robots.txt 파일을 넣어 것입니다. 댄서는 경로 핸들러, 템플릿 등을 통과하지 않고 자동으로 정규 파일로 제공합니다.

관련 문제