Wie kann ich eine Subdomain in eine andere Subdomain umschreiben? - Ruby-on-Rails, URL-Umschreiben, Subdomain, Rack, Middleware

Ich habe diese einfache Rack-Middleware geschrieben, um meine Subdomain neu zu schreiben:

def call(env)
request = Rack::Request.new(env)

if request.host.starts_with?("something-something")
[301, { "Location" => request.url.gsub("something-something","site-i-want") }, self]
else
@app.call(env)
end

Und das funktioniert gut für die Entwicklung. Aber in der Produktion bekomme ich einen Fehler beim Aufruf .each zum TheNameOfMyRackMiddleware

Gibt es etwas, das seltsam syntaktisch falsch darüber ist, wie ich das schreibe?

ich will das someting-something.mywebsite.com zu gehen site-i-want.mywebsite.com

Ich habe es auch direkt mit meinen Routen damit probiert:

constraints :subdomain => "something-something" do
redirect { |p, req| req.url.sub("something-something", "site-i-want") }
end

Was bei der Entwicklung gut funktioniert. Aber geht nicht, bevor ich mein Versagen bekomme, dass die Seite nicht existiert.

Ganz offen dafür, dies überhaupt zu erreichen.

Antworten:

1 für die Antwort № 1

Wie wäre es, dies auf deinen Routen zu versuchen:

constraints subdomain: "something-something" do
get ":any", to: redirect(subdomain: "site-i-want", path: "/%{any}"), any: /.*/
end

Es fängt im Prinzip jede Anfrage an die Domäne "Something-Something" ab und schreibt sie mit dem bestehenden Pfad neu, aber mit einer neuen Subdomain.


Am beliebtesten