2012-08-05 29 views
6

私はHeroku上でステージングとプロダクションアプリを持っています。Heroku上のステージングサーバー用に異なるrobots.txt

クローラの場合、robots.txtファイルを設定します。

その後、私はGoogleからメッセージを受け取りました。

親愛なるウェブマスター、あなたのサイトのホスト名、https://www.myapp.com/、 であったSSL証明書の "サブジェクト名"、のいずれかと一致しません:
を* .herokuapp.com
herokuapp.com

Googleロボットがステージングアプリでrobots.txtを読み取り、このメッセージを送信します。なぜなら私はクローラがファイルを読むのを防ぐための何も設定しなかったからです。

私は、.gitignoreファイルをステージングとプロダクションの間で変更することを考えていますが、これを行う方法を理解できません。

これを実装するためのベストプラクティスは何ですか?

EDITは

私はこれについてGoogleで検索し、この記事では、基本的なラック認証を設定すると言うと、あなたはrobots.txtのを気にする必要はありませんhttp://goo.gl/2ZHal

この記事を見つけました。

私は基本的な認証がGoogle botを防ぐことができないことを知りませんでした。 このソリューションは、.gitignoreファイルを操作する方が優れているようです。

+0

gitがあなたが行きたいと思う方法ならば、 'staging' **ブランチ**を変更した' .gitignore'で維持し、そのブランチをherokuのステージングサイトにプッシュすることができます。 – deefour

+0

ええと、私はまだgitに慣れていないので、ブランチについてもっと知る必要があります。その方法について調べてください。ありがとう。 –

答えて

6

/robots.txtには、静的ファイルではなくコントローラのアクションを動的に使用するのはどうですか? 検索エンジンがアプリケーションのインデックスを作成することを許可または拒否する環境によって異なります。

+0

私はそれについて調査し、いくつかのリソースを見つけました。私はそれを試みます。あなたのアドバイスをありがとう。 –

12

Rails 3の優れた解決策は、Rackを使用することです。プロセスの概要を示す偉大な記事です: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

関連する問題