2012-08-05 5 views
6

Posiadam aplikacje produkcyjne i produkcyjne na Heroku.Różne pliki robots.txt dla serwera testowego na Heroku

Dla robota ustawiłem plik robots.txt.

Po tym otrzymałem wiadomość od Google.

Drogi Webmaster, Nazwa hosta witryny, https://www.myapp.com/, nie pasuje do żadnego z "Subject Names" w certyfikacie SSL, które były:
* .herokuapp.com
herokuapp.com

Google bot odczytuje plik robots.txt z moich aplikacji pomostowych i wysyła tę wiadomość. ponieważ nie ustawiłem niczego, co uniemożliwi robotom odczytanie pliku.

Zastanawiam się nad zmianą pliku .gitignore między inscenizacją a produkcją, ale nie wiem, jak to zrobić.

Jakie są najlepsze praktyki w tym zakresie?

EDIT

google na ten temat i znalazłem ten artykuł http://goo.gl/2ZHal

Ten artykuł mówi ustawić uwierzytelnianie podstawowe Rack i nie trzeba się martwić o robots.txt.

Nie wiedziałem, że podstawowy auth może zapobiec botowi Google. Wygląda na to, że to rozwiązanie lepiej manipuluje plikiem .gitignore.

+0

Jeśli git jest sposobem, w jaki chcesz iść, możesz utrzymać gałąź 'inscenizacyjna ** ** ze zmodyfikowanym' .gitignore', a następnie przesunąć gałąź do miejsca postoju na heroku. – deefour

+0

Hmm, wciąż jestem nowy w git i muszę dowiedzieć się więcej o gałęzi, sprawdź tę metodę. Dzięki. –

Odpowiedz

6

A co z serwowaniem /robots.txt dynamicznie za pomocą akcji kontrolera zamiast posiadania pliku statycznego? W zależności od środowiska dopuszczasz lub zabraniasz indeksowania aplikacji przez wyszukiwarki.

+0

Szukałem tego i znalazłem kilka zasobów, spróbuję tego. Dziękuję za Twoją radę. –

12

Doskonałym rozwiązaniem z Rails 3 jest użycie Rack. Oto świetny post, który opisuje proces: Serving Different Robots.txt Using Rack. Podsumowując, należy dodać do swojej routes.rb:

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

a następnie utworzyć nowy plik w 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 

Wreszcie upewnij się, że to ruch robots.txt w Twojej config folder (lub gdziekolwiek podasz w klasie RobotsGenerator).

+0

w rzeczywistości artykuł mówi, aby umieścić plik w lib/robots_generator.rb, również przenieść plik robots.txt z publicznego/do config/ – linojon

+0

@linojon dzięki właśnie zaktualizowany odpowiedź – stereoscott

+0

najlepsze rozwiązanie! – Attenzione