2012-08-05 2 views
6

Ich habe Staging-und Produktions-Apps auf Heroku.Verschiedene robots.txt zum Staging-Server auf Heroku

Für den Crawler habe ich die Datei robots.txt eingestellt.

Danach bekam ich eine Nachricht von Google.

Lieber Webmaster, Der Host-Name Ihrer Website, https://www.myapp.com/, hat keine des "Subject Names" in dem SSL-Zertifikat übereinstimmen, das war:
* .herokuapp.com
herokuapp.com

Der Google Bot las die robots.txt auf meinen Staging-Apps und sendete diese Nachricht. weil ich nichts eingerichtet habe, um Crawler daran zu hindern, die Datei zu lesen.

Also, was ich darüber denke, ist .gitignore Datei zwischen Staging und Produktion zu ändern, aber ich kann nicht herausfinden, wie dies zu tun ist.

Was sind die Best Practices für die Implementierung?

EDIT

gegoogelt ich über dieses und fanden diesen Artikel http://goo.gl/2ZHal

Dieser Artikel sagt Basic Rack-Authentifizierung zu setzen und Sie werden nicht über robots.txt zu kümmern brauchen.

Ich wusste nicht, dass grundlegende Auth kann Google Bot verhindern. Es scheint, dass diese Lösung besser ist, manipulieren .gitignore Datei.

+0

Wenn git der Weg ist, den Sie gehen möchten, könnten Sie einen 'staging' ** - Zweig ** mit dem modifizierten' .gitignore' pflegen und diesen Zweig auf die Staging-Site auf heroku schieben. – deefour

+0

Hmm, ich bin immer noch neu bei Git und muss mehr über Branch erfahren, überprüfe diese Methode. Vielen Dank. –

Antwort

6

Wie wäre es, /robots.txt dynamisch mit einer Controller-Aktion statt einer statischen Datei zu bedienen? Je nach Umgebung erlauben oder verbieten Sie Suchmaschinen, Ihre Anwendung zu indizieren.

+0

Ich habe danach gesucht und mehrere Ressourcen gefunden, ich werde das versuchen. Danke für deinen Rat. –

12

Eine gute Lösung mit Rails 3 ist die Verwendung von Rack. Hier ist ein toller Beitrag, der den Prozess umreißt: Serving Different Robots.txt Using Rack. Um es zusammenzufassen, fügen Sie diese zu Ihrem routes.rb:

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

und dann eine neue Datei im lib/robots_generator.rb erstellen

# 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 

Schließlich stellen Sie sicher, bewegen robots.txt in Ihre Konfiguration aufzunehmen Ordner (oder wo immer Sie in Ihrer RobotsGenerator Klasse angeben).

+0

eigentlich der Artikel sagt, um die Datei in lib/robots_generator.rb setzen, bewegen Sie auch robots.txt von öffentlichen/zu config/ – linojon

+0

@linojon danke nur die Antwort aktualisiert – stereoscott

+0

beste Lösung !! – Attenzione