2012-04-01 3 views
1

I이 처음이다이 미들웨어 :레일 Heroku가 응용 프로그램의 도움을 리디렉션

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

답변

2

HTTP_HOST 그냥 베어 호스트 이름입니다 프로토콜없이 (즉, www.konkurrencerher.dk) 따라서 절대 APP_DOMAIN 상수와 같지 않으며 항상 리디렉션됩니다.

관련 문제