2012-08-05 2 views
6

Ho applicazioni di staging e produzione su Heroku.Robots.txt diverso per il server di gestione temporanea su Heroku

Per il crawler, ho impostato il file robots.txt.

Successivamente ho ricevuto un messaggio da Google.

Caro Webmaster, Il nome host del tuo sito, https://www.myapp.com/, non corrisponde a nessuno dei "Nomi soggetto" nel certificato SSL, che erano:
* .herokuapp.com
herokuapp.com

Il bot di Google legge il file robots.txt sulle mie app di staging e invia questo messaggio. perché non ho impostato nulla per impedire ai crawler di leggere il file.

Quindi, quello che sto pensando è di cambiare il file .gitignore tra staging e produzione, ma non riesco a capire come farlo.

Quali sono le migliori pratiche per l'implementazione di questo?

EDIT

Ho cercato su google su questo e abbiamo trovato questo articolo http://goo.gl/2ZHal

Questo articolo dice per impostare l'autenticazione di base Rack e non sarà necessario preoccuparsi di robots.txt.

Non sapevo che l'autenticazione di base possa impedire Google Bot. Sembra che questa soluzione sia migliore che manipolare il file .gitignore.

+0

Se git è il modo in cui si desidera andare, è possibile mantenere un 'staging' ** branch ** con il' .gitignore' modificato e spingere quel ramo sul sito di staging su heroku. – deefour

+0

Hmm, sono ancora nuovo di git e ho bisogno di saperne di più sul ramo, controlla su quel metodo. Grazie. –

risposta

6

Che dire di servire /robots.txt dinamicamente utilizzando un'azione controller invece di avere un file statico? A seconda dell'ambiente, si consente o non si consente ai motori di ricerca di indicizzare la propria applicazione.

+0

L'ho cercato e ho trovato diverse risorse, ci proverò. Grazie del consiglio. –

12

Un'ottima soluzione con Rails 3 è l'utilizzo di Rack. Ecco un ottimo post che descrive il processo: Serving Different Robots.txt Using Rack. Per riassumere, si aggiunge questo alla routes.rb:

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

e quindi si crea un nuovo file all'interno lib/robots_generator.rb

# 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 

Infine assicurarsi di includere mossa robots.txt nel vostro config cartella (o ovunque specificato nella classe RobotsGenerator).

+0

in realtà l'articolo dice di mettere il file in lib/robots_generator.rb, sposta anche robots.txt da public/a config/ – linojon

+0

@linojon grazie appena aggiornato la risposta – stereoscott

+0

soluzione migliore !! – Attenzione