2011-07-30 29 views
6

Tôi có sitemap của www.mysite.com lưu trữ trên https://s3.amazonaws.com/mysite/sitemaps/sitemap1.xml.gzLàm thế nào để làm cho một tập tin từ xa với đường ray

Có thể cấu hình Rails (tuyến đường, điều khiển, ...) để làm cho các tập tin sitemap1.xml dưới www.mysite.com/sitemap1.xml.gz?

Cảm ơn.

Ps. lý do tại sao sơ ​​đồ trang web dưới AWS là: https://github.com/kjvarga/sitemap_generator/wiki/Generate-Sitemaps-on-read-only-filesystems-like-Heroku

+0

Tại sao không chỉ xác định tuyến đường đến bộ điều khiển tải xuống tệp đó và phục vụ dưới dạng đầu ra? –

+0

Chắc chắn nó là tầm thường, nhưng bạn có thể cung cấp một ví dụ? Cảm ơn. – Topo

+0

giống như ai đó đã viết một ví dụ trong câu trả lời của họ;) Một chuyển hướng sẽ đơn giản hơn. –

Trả lời

-1

Tạo bộ điều khiển sẽ chuyển hướng đến vị trí tệp Amazon S3 và tạo một tuyến đường phù hợp cho nó.

routes.rb:

match 'sitemap1.xml.gz' => 'site_map#redirect' 

site_map_controller.b:

class SiteMapController < ApplicationController 
    def redirect 
     redirect_to 'https://s3.amazonaws.com/mysite/sitemaps/sitemap1.xml.gz' 
    end 
end 
+0

Mặc dù url chính xác là s3 cần thông tin đăng nhập. Vì vậy, điều này sẽ không hoạt động. – s84

+1

Vấn đề là Google không hài lòng nếu bạn phục vụ một sơ đồ trang web có chuyển hướng, vì sơ đồ trang web cần phải được phân phối từ bên trong miền được ánh xạ. Ngoài ra, theo cách này, bạn đang hiển thị thư mục s3, đây không phải là phương pháp hay nhất. – Topo

+1

Như Topo cho biết một sơ đồ trang web không nên sau khi chuyển hướng, giải pháp này sẽ không hoạt động –

0

Theo tôi được biết, bạn đang triển khai một hệ thống tập tin chỉ đọc như Heroku.

Nếu vậy, sau đây là một số điều mà sẽ giúp:

2

dựa trên https://github.com/kjvarga/sitemap_generator/issues/173

Tôi đang cố gắng này ...
trong routes.rb

get 'sitemap(:id).:format.:compression' => 'sitemap#show'

trong sitemap_controller.rb

class SitemapController < ApplicationController 
    def show 
    data = open("http://{ENV['AWS_BUCKET_PROD']}.s3.amazonaws.com/sitemaps/sitemap#{params[:id]}.xml.gz") 
    send_data data.read, :type => data.content_type 
    end 
end 

Cũng đảm bảo rằng sitemap (inde x) tệp chứa liên kết đến các tệp sơ đồ trang web khác (sitemap1, sitemap2 ...) được đặt tại trang web của bạn chứ không phải amazon.

+0

Đây có lẽ là cách duy nhất. Xuất sắc! – pierrea

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