2012-08-05 38 views
6

Tôi có các ứng dụng dàn dựng và sản xuất trên Heroku.robots.txt khác nhau cho máy chủ dàn dựng trên Heroku

Đối với trình thu thập thông tin, tôi đặt tệp robots.txt.

Sau đó tôi nhận được tin nhắn từ Google.

Thưa Webmaster, Tên máy chủ của trang web của bạn, https://www.myapp.com/, không phù hợp với bất kỳ "tên đối tượng" trong chứng chỉ SSL của bạn, mà là:
* .herokuapp.com
herokuapp.com

bot Google đọc robots.txt trên ứng dụng dàn dựng của tôi và gửi thư này. bởi vì tôi không đặt bất kỳ thứ gì để ngăn trình thu thập thông tin đọc tệp.

Vì vậy, những gì tôi đang nghĩ đến là thay đổi tệp .gitignore giữa dàn dựng và sản xuất, nhưng tôi không thể tìm ra cách để làm điều này.

Thực tiễn tốt nhất để thực hiện điều này là gì?

EDIT

Tôi googled về vấn đề này và tìm thấy bài viết này http://goo.gl/2ZHal

Bài viết này nói đến thiết lập xác thực Kệ cơ bản và bạn sẽ không cần phải quan tâm về robots.txt.

Tôi không biết rằng auth cơ bản có thể ngăn chặn google bot. Dường như giải pháp này là tốt hơn để thao tác tệp .gitignore.

+0

Nếu git là cách bạn muốn, bạn có thể duy trì nhánh 'staging' ** với' .gitignore' đã sửa đổi và đẩy chi nhánh đó vào trang dàn dựng trên heroku. – deefour

+0

Hmm, tôi vẫn còn mới để git và cần phải tìm hiểu thêm về chi nhánh, kiểm tra về phương pháp đó. Cảm ơn. –

Trả lời

6

Điều gì về việc phục vụ /robots.txt động bằng cách sử dụng tác vụ điều khiển thay vì có tệp tĩnh? Tùy thuộc vào môi trường bạn cho phép hoặc không cho phép công cụ tìm kiếm lập chỉ mục ứng dụng của bạn.

+0

Tôi đã tìm kiếm về điều đó và tìm thấy một số tài nguyên, tôi sẽ thử điều đó. Cám ơn về việc khuyên của bạn. –

12

Giải pháp tuyệt vời với Rails 3 là sử dụng Rack. Đây là một bài đăng tuyệt vời phác thảo quá trình: Serving Different Robots.txt Using Rack. Nói tóm lại, bạn thêm video này vào routes.rb của bạn:

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

và sau đó tạo một file mới trong thư mục 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 

Cuối cùng hãy chắc chắn để bao gồm di chuyển robots.txt vào cấu hình của bạn thư mục (hoặc bất cứ nơi nào bạn chỉ định trong lớp RobotsGenerator).

+0

thực sự bài báo nói rằng để đưa tệp vào lib/robots_generator.rb, cũng di chuyển robots.txt từ công khai/sang cấu hình/ – linojon

+0

@linojon nhờ chỉ cập nhật câu trả lời – stereoscott

+0

giải pháp tốt nhất !! – Attenzione

Các vấn đề liên quan