2012-08-05 3 views
6

Heroku에서 스테이징 및 프로덕션 응용 프로그램을 사용하고 있습니다.Heroku의 스테이징 서버와 다른 robots.txt

크롤러의 경우 robots.txt 파일을 설정합니다.

그 후 Google에서 메시지를 받았습니다.
* .herokuapp.com
herokuapp.com

:

친애하는 웹 마스터, 사이트, https://www.myapp.com/의 호스트 이름, 이었다 SSL 인증서,에 "제목 이름"과 일치하지 않습니다

Google 봇은 내 준비 앱에서 robots.txt를 읽고이 메시지를 보냅니다. 크롤러가 파일을 읽지 못하게하기 위해 아무것도 설정하지 않았기 때문입니다.

그래서 내가 생각하는 것은 .gitignore 파일을 준비와 제작간에 변경하는 것이지만 어떻게해야하는지 알 수 없습니다.

이것을 구현하는 가장 좋은 방법은 무엇입니까?

편집

나는 이것에 대해 인터넷 검색 및이 문서에서는 기본 랙 인증을 설정 말한다 당신이 robots.txt에 대해 걱정하지 않아도됩니다 http://goo.gl/2ZHal

이 문서를 발견했다.

기본 인증이 Google 봇을 예방할 수 있다는 것을 알지 못했습니다. 이 솔루션은 .gitignore 파일을 조작하는 것이 더 좋습니다.

+0

당신이 가고 싶은 길인 경우, 수정 된'.gitignore'를 가지고'staging' ** branch **를 유지하고 그 지점을 heroku의 준비 사이트로 밀어 넣을 수 있습니다. – deefour

+0

흠, 나는 여전히 자식이 아니기 때문에 분기에 대해 더 자세히 알아야 할 필요가있다. 감사. –

답변

6

정적 파일 대신 컨트롤러 동작을 사용하여 /robots.txt을 동적으로 처리하는 것은 어떻습니까? 환경에 따라 검색 엔진에서 응용 프로그램의 색인을 생성하도록 허용하거나 허용하지 않습니다.

+0

나는 그것에 대해 조사하고 여러 가지 자원을 발견했다. 나는 그것을 시도 할 것이다. 조언 해 주셔서 감사합니다. –

12

레일 3을 사용하는 가장 좋은 방법은 랙을 사용하는 것입니다. 다음은이 프로세스를 요약 한 훌륭한 글입니다 : Serving Different Robots.txt Using Rack.

# config/routes.rb 
require 'robots_generator' # Rails 3 does not autoload files in lib 
match "/robots.txt" => RobotsGenerator 

을 다음

# lib/robots_generator.rb 
class RobotsGenerator 
    # Use the config/robots.txt in production. 
    # Disallow everything for all other environments. 
    # http://avandamiri.com/2011/10/11/serving-different-robots-using-rack.html 
    def self.call(env) 
    body = if Rails.env.production? 
     File.read Rails.root.join('config', 'robots.txt') 
    else 
     "User-agent: *\nDisallow: /" 
    end 

    # Heroku can cache content for free using Varnish. 
    headers = { 'Cache-Control' => "public, max-age=#{1.month.seconds.to_i}" } 

    [200, headers, [body]] 
    rescue Errno::ENOENT 
    [404, {}, ['# A robots.txt is not configured']] 
    end 
end 

마지막으로 당신의 설정으로 이동 robots.txt를 포함해야합니다 lib 디렉토리/robots_generator.rb 내부에 새 파일을 생성 : 요약하면, 당신은 당신의 routes.rb이 추가 폴더 (또는 RobotsGenerator 클래스에서 지정하는 모든 위치).

+0

실제로 기사가 lib/robots_generator.rb에 파일을 넣고 robots.txt 파일을 public/config/ – linojon

+0

@linojon으로 옮깁니다. 응답이 – stereoscott

+0

최상의 해결책으로 업데이트되었습니다. – Attenzione