[RAILS 3.1][RUTING] Wymuszenie przekierowania z jednej domeny na drugą

Witam szanowne grono,

Mam taką kwestię do rozwiązania, które nie daje mi spokoju. Wiem, jak to zrobić nie elegancko w kontrolerze aplikacji z wykorzystaniem filtra, ale wiem również, że mógłbym tę kwestię rozwiązać poprzez trasy rutingu. Otóż chciałbym móc w trasach rutingu wykryć, że żądanie przyszło z domeny abc.pl i przekierować użytkownika na to samo żądanie spod domeny abc.com dodając jedynie wersję językową czyli abc.com/pl.

constraints :host => /abc.pl/ do
match ‘/’ => redirect(‘http://abc.com/pl/’)
end

Jednak to rozwiązuje mi jedynie przypadek, gdy ktoś wejdzie z samej domeny: abc.pl. Jak rozwiązać przypadek, gdyż ktoś przekaże jakieś parametry, np:

abc.pl/sign-in
abc.pl/offer/1
(…)
cokolwiek innnego

by przekierowało na abc.com/pl/*

I jeszcze jedna zagadka: jak obsłużyć wykrycie już innej wybranej wersji językowej: abc.pl/:language/(*) i obsłużyć poprzez trasy przekierowanie na właściwy adres

czyli:

abc.pl/en przekierować na abc.com/en
abc.pl/en/sign-in przekierować na abc.com/en/sign-in
abc.pl/en/offer/1 przekierować na abc.com/en/offer/1

I jaki kod HTTP takiemu stałemu przekierowaniu nadać?

Proszę o zasugerowanie jakiegoś eleganckiego fajnego rozwiązania, bo ja się poddaje. Długo szukałem w necie i nic sensownego nie znalazłem…

https://github.com/jtrupiano/rack-rewrite

Sevos, bardzo interesujący gem. Używałeś go produkcyjnie? Nie jest zbyt obciążający pracę aplikacji? Ciekaw jestem, czy zadziała bez problemu na Heroku…

Mimo wszystko poczekam jeszcze, może jakiś Routes Ninja sprezentuje mi eleganckie rozwiązanie bazując na railsowych trasach :slight_smile:

Tak, używamy na produkcji.

Rack middleware ma szansę być bardziej wydajne od routera rails. Nie mam pomiarów, więc jest to jedynie domysł.

Jeśli by mi zależało maksymalnie na wydajności to bym celowal w rewrite w nginx.

[quote=sevos]Tak, używamy na produkcji.

Rack middleware ma szansę być bardziej wydajne od routera rails. Nie mam pomiarów, więc jest to jedynie domysł.

Jeśli by mi zależało maksymalnie na wydajności to bym celowal w rewrite w nginx.[/quote]
Zgadzam się, rack middleware jest zdecydowanie wydajniejszy od railsowego rutera a nginx od racka middleware. Z tym, że produkcyjne środowisko mam na Heroku i to może być malutką przeszkodą dla rewrite w nginx! Ale dzięki za podrzucenie gem-a, po namyśle raczej skorzystam z niego. :slight_smile: