У меня есть это промежуточное ПО, которое является первым:
class RedirectIt require "net/https" require "uri" require 'open-uri' APP_DOMAIN = 'http://www.konkurrencerher.dk' def initialize(app) @app = app end # def call(env) request = Rack::Request.new(env) if request.env['HTTP_HOST'] != APP_DOMAIN #REDIRECT TIL WWW [301, { "Location" => "#{APP_DOMAIN}#{request.fullpath()}"}, ["Redirecting..."]] elsif "#{request.fullpath()}".split(".").last == "png" #PROXY BILLEDER status, headers, response = @app.call(env) headers['Cache-Control'] = "public, max-age=#{84.hours.to_i}" headers['Content-Type'] = 'image/png' headers['Content-Disposition'] = 'inline' response_body = "#{(open('http://s3-eu-west-1.amazonaws.com/konkurrencerher#{request.path()}')).read}" [status, headers, response_body] else @app.call(env) end end end
Мой журнал Heroku: http://pastie.org/private/wfhvsr2lqfmq9zknenx7q
HTTP_HOST - это просто имя хоста без протокола (т. Е. www.konkurrencerher.dk), поэтому оно никогда не будет равно вашей константе APP_DOMAIN, и вы всегда будете перенаправлять.
HTTP_HOST
www.konkurrencerher.dk
APP_DOMAIN