Frage
Gibt es eine saubere Möglichkeit, alle Versuche, zu einer HTTP://-Version einer Website zu gelangen, auf das HTTPS://-Äquivalent umzuleiten?
Lösung
Ich denke, der sauberste Weg ist wie beschrieben hier auf IIS-aid.com.Es handelt sich nur um web.config. Wenn Sie also den Server wechseln, müssen Sie sich nicht alle Schritte merken, die Sie mit der benutzerdefinierten 403.4-Fehlerseite oder anderen speziellen Berechtigungen durchgeführt haben, es funktioniert einfach.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Andere Tipps
Die einfachste und sauberste Lösung, die ich gefunden habe, war
In den SSL-Einstellungen -> SSL erfordern
In Fehlerseiten -> Bei 403.4-Fehler -> Zur HTTPS-Site weiterleiten
Unter Fehlerseiten -> Funktionseinstellungen bearbeiten...-> Legen Sie detaillierte Fehler für lokale Anfragen und benutzerdefinierte Fehlerseiten für Remote-Anfragen fest
Der Vorteil besteht darin, dass keine zusätzlichen Codezeilen erforderlich sind.Der Nachteil ist, dass Sie zu einer absoluten URL weitergeleitet werden.
Ein sauberer Weg ändert nur das URL-Schema von http -> https und lässt alles andere gleich.Es sollte serverseitig sein, damit es keine Browserprobleme gibt.
JPPinto.com hat Schritt für Schritt Anweisungen darüber, wie dies geschieht, außer dass sie Javascript (HttpRedirect.htm) anstelle einer serverseitigen Umleitung verwenden.Aus irgendeinem Grund konnte ich den IE nicht dazu bringen, das Javascript auszuführen, wenn Sie „Freundliche HTTP-Fehlermeldungen anzeigen“ aktiviert haben, was standardmäßig aktiviert ist.Eine weitere Sache mit dem Skript ist, dass die Umleitung zum Pfad nicht einmal in FF oder Chrome funktionierte.Das Skript leitet immer zum Root um.(Vielleicht habe ich etwas übersehen, weil es zum Pfad umleiten sollte.)
Aus diesen Gründen habe ich für die Weiterleitung eine ASP-Seite verwendet.Der Nachteil ist natürlich, dass hierfür klassisches ASP auf dem Server aktiviert sein muss.
OpsanBlog hat eine ASP-Skript und Anweisungen die gut mit IIS6 funktionieren.
Ich hatte einige Probleme bei der Verwendung dieser Methode mit IIS7.Hauptsächlich Probleme mit der Benutzeroberfläche, da es bei IIS7 sehr leicht ist, etwas zu übersehen.
- Zunächst müssen Sie ASP als Webserver -Funktionsfunktion installieren.
- Zweitens funktionierte die Verwendung eines virtuellen Verzeichnisses nicht wie in IIS7 erwartet und ich habe nicht versucht, dies zu debuggen.Stattdessen stelle ich die Datei in den Stammordner der Site ein und verwendete die URL '/sSlredirect.asp' auf der Fehlerseite 403.4, um sie zu verweisen.
- Zum Schluss der schwierigste Teil, Sie darf SSL für SSLRedirect.asp NICHT erzwingen.Andernfalls erhalten Sie einen 403.4-Fehler.Wählen Sie dazu die Datei in der „Inhaltsansicht“ von IIS7 aus und wechseln Sie zur „Funktionsansicht“, damit Sie die SSL-Einstellungen für die einzelne Datei bearbeiten und das Kontrollkästchen „SSL erforderlich“ deaktivieren können.
Der IIS-Manager sollte den Dateinamen in der Kopfzeile anzeigen.
Global.asax
protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}
Ich verwende klassisches ASP (Intranet) und auf Seiten, die eine Anmeldung erfordern, führt die Anmelde-Include-Datei die Umleitung durch:
if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then
Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if
Dies beinhaltet natürlich keine GET- oder POST-Daten.Es handelt sich also praktisch um eine saubere Weiterleitung zu Ihrer gesicherten Seite.
Ich denke, mit „sauber“ meinen Sie etwa eine 300-Weiterleitung.Konfiguration für viele Server und Sprachen Hier.