Wenn Sie mit IIS 7 und R2 arbeiten, finden Sie hier eine Anleitung, die funktioniert und am "saubersten" ist
Ujwal Parker,
Antworten:
177
Ich denke, der sauberste Weg ist wie hier auf IIS-aid.com beschrieben . Es ist nur web.config. Wenn Sie also den Server wechseln, müssen Sie sich nicht alle Schritte merken, die Sie mit der benutzerdefinierten Fehlerseite 403.4 oder anderen speziellen Berechtigungen ausgeführt haben. Es funktioniert einfach.
<configuration><system.webServer><rewrite><rules><rulename="HTTP to HTTPS redirect"stopProcessing="true"><matchurl="(.*)"/><conditions><addinput="{HTTPS}"pattern="off"ignoreCase="true"/></conditions><actiontype="Redirect"redirectType="Permanent"url="https://{HTTP_HOST}/{R:1}"/></rule></rules></rewrite></system.webServer></configuration>
Dies funktionierte für mich mit der Ausnahme, dass ich die Umleitungs-URL in https: // {HTTP_HOST} {REQUEST_URI} ändern musste
Andrew S
6
Das hat auch bei mir funktioniert. Ich musste die Anwendung hinzufügen, unter der ich ausgeführt wurde ... localhost / app1 => http: // {HTTP_HOST} / app1 / {R: 1}
RealSollyM
15
Platzieren Sie für alle, die noch keinen Abschnitt zum Umschreiben haben, die Regeln in den folgenden Abschnitten der web.config: <system.webServer> <rewrite> <rules> ... </ rules> </rewrite> </ system .webServer>
raider33
16
Stellen Sie sicher, dass das Microsoft URL Rewrite Module auf dem IIS-Server installiert ist
Die einfachste und sauberste Lösung, die ich gefunden habe, war zu
In den SSL-Einstellungen -> SSL erforderlich
In Fehlerseiten -> Bei 403.4 Fehler -> Zur HTTPS-Site umleiten
Unter Fehlerseiten -> Funktionseinstellungen bearbeiten ... -> Detaillierte Fehler für lokale Anforderungen und benutzerdefinierte Fehlerseiten für Remote-Anforderungen festlegen
Der Vorteil ist, dass keine zusätzlichen Codezeilen erforderlich sind. Nachteil ist, dass es Sie zu einer absoluten URL weiterleitet.
funktioniert einwandfrei (unter IIS 8.5 / 2012 R2). und kein basteln mit der web.config
schmendrick
Könnten Sie bitte ein Beispiel für diesen Nachteil geben? Unter welchen Umständen würde es passieren und warum ist es eine negative Sache? Wenn Sie es Ihrer Antwort hinzufügen könnten, wäre das großartig. Vielen Dank!
Marcos Dimitrio
2
@MarcosDimitrio Ich bin mir nicht sicher, da es so lange her ist. aber ich glaube, als ich meinte, dass es dich zu einer absoluten URL weiterleitet, meinte ich eine "Basis-URL". Zum Beispiel würde "http": //mywebsite.com/hellokitty zu "https": //mywebsite.com umgeleitet, wodurch einige Pfadinformationen verloren gehen. Dadurch würde jeder vorhandene Link mit zusätzlichen Pfadinformationen unterbrochen.
ColacX
5
Ein sauberer Weg ändert nur das URL-Schema von http -> https und lässt alles andere gleich. Es sollte serverseitig sein, damit keine Browserprobleme auftreten.
JPPinto.com enthält schrittweise Anweisungen dazu, mit der Ausnahme, dass anstelle einer serverseitigen Umleitung Javascript (HttpRedirect.htm) verwendet wird. Aus irgendeinem Grund konnte der IE das Javascript nicht ausführen, wenn Sie die Option "Anzeigen freundlicher HTTP-Fehlermeldungen" aktiviert haben, die standardmäßig aktiviert ist. Eine andere Sache mit dem Skript ist, dass die Umleitung zum Pfad selbst in FF oder Chrome nicht funktioniert hat. Das Skript leitet immer zu root weiter. (Vielleicht habe ich etwas verpasst, weil es zum Pfad umleiten sollte.)
Aus diesen Gründen habe ich eine ASP-Seite für die Weiterleitung verwendet. Der Nachteil ist natürlich, dass dafür klassischer ASP auf dem Server aktiviert sein muss.
Ich hatte einige Probleme mit dieser Methode mit IIS7. Probleme mit der Benutzeroberfläche meistens, da IIS7 es wirklich leicht macht, etwas zu übersehen.
Zunächst müssen Sie ASP als Webserver-Rollenfunktion installieren.
Zweitens funktionierte die Verwendung eines virtuellen Verzeichnisses in IIS7 nicht wie erwartet und ich habe nicht versucht, dies zu debuggen. Stattdessen habe ich die Datei in den Stammordner der Site gestellt und die URL '/SSLRedirect.asp' auf der 403.4-Fehlerseite verwendet, um darauf zu verweisen.
Zuletzt, der schwierigste Teil, dürfen Sie SSL für SSLRedirect.asp NICHT erzwingen . Andernfalls wird ein 403.4-Fehler angezeigt. Dazu wählen Sie die Datei in IIS7 'Inhaltsansicht' aus und wechseln zu '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 im Header anzeigen.
Die verknüpften Anweisungen auf JPPinto.com wurden aktualisiert, um hervorzuheben, dass dies unter IIS 7.5 oder R2 nicht funktioniert. Sie sagen, dass Sie aufgrund von Sicherheitsänderungen in den neueren Versionen von IIS eine Sperrenverletzung erhalten. Sie schlagen vor, stattdessen die URL Rewrite 2.0-Methode zu verwenden (ähnlicher Ansatz wie in der Antwort von @toxaq).
Ich verwende klassisches Asp (Intranet) und auf Seiten, für die eine Anmeldung erforderlich ist, 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. Tatsächlich handelt es sich also um eine saubere Weiterleitung zu Ihrer gesicherten Seite.
Antworten:
Ich denke, der sauberste Weg ist wie hier auf IIS-aid.com beschrieben . Es ist nur web.config. Wenn Sie also den Server wechseln, müssen Sie sich nicht alle Schritte merken, die Sie mit der benutzerdefinierten Fehlerseite 403.4 oder anderen speziellen Berechtigungen ausgeführt haben. Es funktioniert einfach.
quelle
Die einfachste und sauberste Lösung, die ich gefunden habe, war zu
In den SSL-Einstellungen -> SSL erforderlich
In Fehlerseiten -> Bei 403.4 Fehler -> Zur HTTPS-Site umleiten
Unter Fehlerseiten -> Funktionseinstellungen bearbeiten ... -> Detaillierte Fehler für lokale Anforderungen und benutzerdefinierte Fehlerseiten für Remote-Anforderungen festlegen
Der Vorteil ist, dass keine zusätzlichen Codezeilen erforderlich sind. Nachteil ist, dass es Sie zu einer absoluten URL weiterleitet.
quelle
Ein sauberer Weg ändert nur das URL-Schema von http -> https und lässt alles andere gleich. Es sollte serverseitig sein, damit keine Browserprobleme auftreten.
JPPinto.com enthält schrittweise Anweisungen dazu, mit der Ausnahme, dass anstelle einer serverseitigen Umleitung Javascript (HttpRedirect.htm) verwendet wird. Aus irgendeinem Grund konnte der IE das Javascript nicht ausführen, wenn Sie die Option "Anzeigen freundlicher HTTP-Fehlermeldungen" aktiviert haben, die standardmäßig aktiviert ist. Eine andere Sache mit dem Skript ist, dass die Umleitung zum Pfad selbst in FF oder Chrome nicht funktioniert hat. Das Skript leitet immer zu root weiter. (Vielleicht habe ich etwas verpasst, weil es zum Pfad umleiten sollte.)
Aus diesen Gründen habe ich eine ASP-Seite für die Weiterleitung verwendet. Der Nachteil ist natürlich, dass dafür klassischer ASP auf dem Server aktiviert sein muss.
OpsanBlog verfügt über ein ASP-Skript und Anweisungen , die mit IIS6 gut funktionieren.
Ich hatte einige Probleme mit dieser Methode mit IIS7. Probleme mit der Benutzeroberfläche meistens, da IIS7 es wirklich leicht macht, etwas zu übersehen.
Der IIS-Manager sollte den Dateinamen im Header anzeigen.
quelle
Global.asax
quelle
Ich verwende klassisches Asp (Intranet) und auf Seiten, für die eine Anmeldung erforderlich ist, führt die Anmelde-Include-Datei die Umleitung durch:
Dies beinhaltet natürlich keine GET- oder POST-Daten. Tatsächlich handelt es sich also um eine saubere Weiterleitung zu Ihrer gesicherten Seite.
quelle
Ich denke mit "sauber" meinst du wie mit einer 300er Weiterleitung. Config für viele Server und Sprachen hier .
quelle