Gibt es eine saubere Möglichkeit, alle Versuche umleiten zu einer HTTP: // - Version einer Website zu seinem HTTPS: // Äquivalent?IIS7: HTTP-> HTTPS sauber
Antwort
Ich denke, der sauberste Weg ist wie beschrieben here on IIS-aid.com. Es ist nur web.config, und wenn Sie den Server wechseln, müssen Sie sich nicht an alle Schritte erinnern, die Sie mit der benutzerdefinierten Fehlerseite 403.4 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="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Dies funktioniert perfekt, und für Bonuspunkte ist es völlig in sich abgeschlossen, so dass Sie keine neue Website erstellen müssen, wie in der angenommenen Antwort – WickyNilliams
Wird dies für alle URLs unabhängig vom Dateityp ausgelöst. z.B. Eine direkte URL zu einer TXT-Datei? – Cheekysoft
Dies funktionierte für mich mit der Ausnahme, dass ich die Umleitungs-URL zu https ändern musste: // {HTTP_HOST} {REQUEST_URI} –
Ich denke mit "sauber" meinst du wie mit einem 300 Redirect. Konfiguration für viele Server & Sprachen here.
Ein sauberer Weg ändert nur das URL-Schema von http -> https und lässt alles andere gleichwertig. Es sollte serverseitig sein, so dass es keine Browserprobleme gibt.
JPPinto.com hat Step-By-Step instructions auf, wie dies gemacht wird, außer dass sie Javascript (HttpRedirect.htm) anstelle einer serverseitigen Umleitung verwenden. Aus irgendeinem Grund konnte ich IE nicht das Javascript laufen lassen, wenn Sie "freundliche HTTP-Fehlermeldungen anzeigen" aktiviert haben, das standardmäßig aktiviert ist. Eine andere Sache mit dem Skript ist, dass die Umleitung zum Pfad nicht funktioniert, auch nicht in FF oder Chrome. Das Skript leitet immer zu root um. (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 dies erfordert, dass klassisches ASP auf dem Server aktiviert wird.
OpsanBlog hat eine ASP script and instructions, die gut mit IIS6 funktionieren.
Ich hatte ein paar Probleme mit dieser Methode mit IIS7. Die Benutzeroberfläche hat Probleme, da IIS7 es sehr leicht macht, etwas zu verpassen.
IIS-Manager sollte den Dateinamen in der Kopfzeile anzeigen.
Die verknüpften Anweisungen auf JPPinto.com wurden aktualisiert, um hervorzuheben, dass dies nicht auf IIS 7.5 oder R2 funktioniert. Sie sagen, dass Sie aufgrund von Sicherheitsänderungen in den neueren Versionen von IIS eine Sperrverletzung erhalten. Sie schlagen stattdessen die Methode URL Rewrite 2.0 vor (ähnlich wie bei der Antwort von @toxaq). – AussieRob
Die einfache und saubere Lösung, die ich war zu
gefundenIn SSL-Einstellungen -> SSL erforderlich
In Error Pages -> On 403.4 Fehlern -> zum HTTPS umleiten Seite
In Fehlerseiten -> Einstellungen bearbeiten ...-> Set Detailed Fehler für lokale Anfragen und benutzerdefinierte Fehlerseiten für Remote-Anfrage
Der Vorteil ist, dass es keine zusätzlichen Zeilen Code benötigt. Nachteil ist, dass es Sie auf eine absolute URL umleitet.
funktioniert perfekt (auf IIS 8.5/2012 R2). und kein Basteln mit der web.config – schmendrick
dies ist eine kluge Möglichkeit, das Problem zu lösen. thx –
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. Danke vielmals! –
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 kann diese Umleitung leicht umgehen, indem ich "localhost" irgendwo in den URI setze, z. die Abfragezeichenfolge http://yourdomain.com?localhost=true Ich würde vorschlagen, stattdessen die Request.Url.Host Eigenschaft zu überprüfen –
- 1. Https Abbrechen sauber URL
- 2. Unterschied zwischen sauber, gradlew sauber
- 3. Wie sauber ansible
- 4. IIS7-Komprimierungsfehler
- 5. IIS7 Replikationskonfigurationseinstellungen
- 6. IIS7 Berechtigungsproblem
- 7. IIS7 Profiling
- 8. IIS7 Authentifizierungsproblem
- 9. Force ASP.NET sauber kompilieren
- 10. Force Maven sauber
- 11. sauber url mit mod_rewirte
- 12. nicht so sauber Architektur
- 13. IIS7 cacheControlMaxAge Attribut funktioniert nicht
- 14. Kann ich HTTPS-Anfragen mit Hilfe von IIS7 ARR an eine HTTP-Anwendung weiterleiten?
- 15. IIS7 URL Rewriting: Wie man HTTPS Protokoll von der neu geschriebenen URL nicht fallen lässt?
- 16. Gute IIS7-Caching-Regeln?
- 17. IIS7 Cache-Control
- 18. IIS7 - Kennwortschutz Entwicklungsserver
- 19. IIS7 programmatisch Standortknoten erhalten
- 20. .NET-Rollen und IIS7
- 21. IIS7 Response.WriteBuffer funktioniert nicht
- 22. IIS7 native Modulprobleme
- 23. Angular2 auf IIS7
- 24. Programmgesteuert Neustart IIS7 (C#)
- 25. IIS7 und Authentifizierungsprobleme
- 26. Einstellung IIS7 gzip Komprimierungsstufe
- 27. Benutzerdefinierte Dateierweiterungen IIS7
- 28. IIS7 und WCF Verwirrung
- 29. Mercurial auf IIS7 Verbindungszeitüberschreitung
Antwort auf James Kovac Blog: http://jameskovacs.com/2007/05/09/how-to-autoredirect-to-a-sslsecured-site- in-iis/ – cpuguru
Wenn Sie auf IIS 7 und auf R2 [hier] sind (http://www.jppinto.com/2010/03/automatisch-redirect-http-requests-to-https-on-iis7-using-) url-rewrite-2-0 /) ist ein Leitfaden, der funktioniert und der "sauberste" –