Heroku + Rack-Rewrite - PullRequest
       11

Heroku + Rack-Rewrite

3 голосов
/ 12 января 2012

Все еще не могу заставить это работать ... Rails 3.1.3, Ruby 1.9.2 в кедровом стеке Heroku.

Попытка использовать https://github.com/jtrupiano/rack-rewrite, чтобы сделать http://domain301 перенаправить на http://www.domain безуспешно (приложение работает, но перенаправления не происходят вообще).

/ config / initializers / rack_rewrite.rb (MyAppName на самом деле правильное имя, domain.com этофактический домен):

MyAppName::Application.config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
    r301 %r{.*}, 'http://www.domain.com$&', :if => Proc.new {|rack_env|
    rack_env['SERVER_NAME'] != 'www.domain.com'
    }
end

Добавлено в Gemfile:

gem 'rack-rewrite'

Сделал "gem install rack-rewrite", "bundle install".

Не повезло.

Есть идеи?

ОБНОВЛЕНИЕ:

Я выяснил ЧАСТЬ проблемы.Так как я просто пытаюсь обслуживать «index.html» и его папку «/ style», похоже, что наличие «index.html» в «/ public» переопределяет перезапись в стойке.Если я удаляю "index.html", перезапись будет работать ... но теперь я не знаю, куда помещать файлы, или не настроил маршруты. Файл по умолчанию на страницу index.html ... любая помощь

Ответы [ 3 ]

5 голосов
/ 20 января 2012

изменение

rack_env['SERVER_NAME'] != 'www.domain.com'

до

rack_env['SERVER_NAME'] == 'domain.com'
0 голосов
/ 18 апреля 2012

Я новичок в этом, поэтому у меня нет логического объяснения, почему он работает, но он работал для меня, когда я помещал коды в config/application.rb вместо нового файла /config/initializers/rack_rewrite.rb.

0 голосов
/ 12 января 2012

Я думаю, что env ["SERVER_NAME"] может быть внутренним днс в этом случае, например, app7009.intra.foo.Я делаю кое-что с доменами в промежуточном программном обеспечении в heroku: я смотрю как env ['REQUEST_URI'], так и env ['PATH_INFO'], главным образом потому, что POW-сервер, который я использую локально, не устанавливает REQUEST_URI.Немного по-разному, как разные серверы заполняют хеш env, я хотел бы, чтобы эта часть запроса URL была более стандартной с чем-то вроде стойки.

env['REQUEST_URI'] !~ /www.domain.com/
...