3 Stimmen

Umleitung von http://example.com auf https://example.mysite.com

Diese Frage wurde in verschiedenen Kombinationen gestellt, aber ich habe nicht die richtige Kombination gefunden, die meine spezielle Frage beantwortet.

Die Konfiguration

  • Rails 3.1 (erlaubt mir die Verwendung von force_ssl in meinem ApplicationController )
  • Gehostet auf Heroku Cedar (damit ich die Middleware nicht anfassen kann)
  • Meine SSL-Zertifikate sind registriert für secure.example.com

Ich habe bereits hinzugefügt force_ssl zu meinem ApplicationController, etwa so:

# file: controllers/application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery
  force_ssl
end

Das Problem

Wenn ein Benutzer derzeit zu http://example.com schaltet force_ssl auf SSL um, aber da es sich nicht um secure.example.com wird eine Warnung über ein ungeprüftes Sicherheitszertifikat angezeigt, da es das Standard-Zertifikat von Heroku verwendet.

(Ich habe festgestellt, dass die Navigation zu http://secure.example.com leitet ordnungsgemäß weiter zu https://secure.example.com und verwendet das richtige Sicherheitszertifikat. Das ist gut.)

Die Frage

Wie kann ich die http://www.example.com/anything y http://example.com/anything zur Weiterleitung an http://secure.example.com/anything ? (Ich gehe davon aus, dass force_ssl den Wechsel von http zu https übernimmt.) Da ich die Middleware nicht berühren kann (denken Sie daran, dass es sich um Heroku-Hosting handelt), habe ich annehmen Ich kann etwas tun wie:

# file: controllers/application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery
  force_ssl
  before_filter :force_secure_subdomain

private
  def force_secure_subdomain
    redirect_to(something...) unless request.ssl?
  end
end

... aber ich habe redirect_to und das request-Objekt noch nicht ausreichend verstanden, um zu wissen, was ich schreiben soll something... . (Ich möchte sicher sein, dass es Abfrageparameter usw. verarbeitet).

4voto

handler Punkte 1453

Können Sie auf einen anderen Hostnamen umleiten, indem Sie wie folgt vorgehen:

# file: controllers/application_controller.rb
class ApplicationController < ActionController::Base
  force_ssl :host => "secure.example.com"
end

siehe: schienen force_ssl quelle für weitere Informationen

0voto

Neil Middleton Punkte 21882

Werfen Sie einen Blick auf rack-rewrite - es ist im Wesentlichen Apache Rewrite, aber in Ruby-Form, und auf Heroku verwendbar.

Auf diese Weise können Sie alle Arten von Regeln auf Rack-Ebene erstellen und festlegen, welche Umleitungen usw. wann erfolgen sollen.

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