2 Stimmen

Geländer: Korrekte Einrichtung mit DNS, Rack-rewrite etc. für Heroku

Ich habe im ganzen Internet gesucht, konnte aber keine endgültige Lösung für das, was ich erwarten würde, um die 100% ordnungsgemäße Einrichtung von DNS usw. sein, um das folgende Ergebnis auf Heroku.com zu erhalten:

Ich kann von überall her ein bisschen Hilfe bekommen, aber nichts Schlüssiges, das sich um das ganze Problem kümmert, von DNS bis Rack-Rewrite, deshalb frage ich hier (der Support bei meinem Registrar und Heroku kann mir nur "ihren Teil" geben).

Was getan werden muss, ist, soweit ich das verstehe:

  1. Hinzufügen von mydomain.com und www.mydomain.com zu benutzerdefinierten Domains bei Heroku

  2. Ändern Sie CNAME in http://myapp.herokuapp.com im DNS meines Registrars. Frage : Würden sowohl "www" als auch "*" die CNAME-Umleitung zu myapp.herokuapp.com verwenden?

  3. Fügen Sie einen "@"-DNS-Eintrag hinzu, um nackte Domain-Anfragen zu bearbeiten (http://mydomain.com). Da dies nicht mit CNAME geschehen wird, verwende ich die IP-Nummern unter https://devcenter.heroku.com/articles/custom-domains obwohl sie dem Artikel zufolge erhebliche Probleme mit der Betriebszeit haben.

-- 1-3 lässt mich mit einer Website zurück, die beiden dient http://mydomain.com y http://www.mydomain.com mit dem Inhalt unter http://myapp.herokuapp.com

c. Jetzt möchte ich alles von http://mydomain.com à http://www.mydomain.com und laut dem Heroku-Support sollte dies mit Rack-Rewrite (https://github.com/jtrupiano/rack-rewrite) geschehen. Unter Verwendung des dortigen Beispiels sollte der Code dann lauten:

r301 %r{.*}, 'http://mydomain.com$&', :if => Proc.new {|rack_env|
  rack_env['SERVER_NAME'] != 'www.mydomain.com'
}

Dadurch entsteht für mich jedoch eine Endlosschleife.

Meine Frage lautet nun: Was wäre der richtige Arbeitsablauf für Heroku und DNS-Einstellungen, um diese Einrichtung zu erreichen?

Es ist sehr schwierig, dieses Problem zu beheben, da es sehr schwierig ist, verschiedene DNS-Einstellungen durch Ausprobieren auszuprobieren (es ist schwer zu wissen, ob sie funktionieren).

5voto

edralph Punkte 1831

Das ist die Rewrite-Regel Ich denke, dass es heißt "mach eine 301-Weiterleitung zu ' http://mydomain.com $&' (wobei das $& anzeigt, dass alles nach dem .com beibehalten wird), aber nur, wenn der Host in der Anfrage nicht 'www.mydomain.com' ist".

Sie geraten also in eine Umleitungsschleife, weil jede Anfrage an Ihren Server, die kein www enthält, z. B. die nackte mydomain.com, zurück zu mydomain.com umgeleitet wird.

Wahrscheinlich muss er umgeschrieben werden in etwas wie:

r301 %r{.*}, 'http://www.mydomain.com$&', :if => Proc.new {|rack_env|
rack_env['SERVER_NAME'] == 'mydomain.com'}

Sie leiten also auf die www-Version Ihrer Domäne um.

Tatsächlich gibt es eine hier fälschen

Bearbeiten: Ich würde Folgendes tun:

  1. Ihre Umleitungsregeln entfernen
  2. richten Sie Ihr DNS so ein, dass sowohl www.domain.com als auch domain.com myapp.herokuapp.com zurückgibt
  3. überprüfen, ob das DNS funktioniert, ohne sich um die Umleitung zu kümmern
  4. stellen Sie sicher, dass auf DNS-Ebene nicht versucht wird, eine hilfreiche Umleitung vorzunehmen

In diesem Stadium gibt es nichts mehr mit der DNS zu tun. Das einzige, was sie tun, ist, eine IP-Adresse (A-Eintrag) oder eine andere Domäne (CNAME) zurückzugeben. Dann ist ihre Arbeit getan.

Nächste:

  1. Anwenden der Rack-Rewrite-Regel
  2. Der Server muss möglicherweise neu gestartet werden - tun Sie es für alle Fälle.
  3. Testen Sie mit etwas wie Sam Spade - die Kopfzeilen enthalten eine 301-Weiterleitung und den neuen Standort, wenn es ordnungsgemäß funktioniert hat

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X