HTTP auf HTTPS umleiten - Google-Treffer tut nicht (505)

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
18.400
Moin!

Google offenbarte mir aus mehreren Quellen diese Lösung für die web.config
Code:
<rewrite>
 <rules>
  <rule name="Redirect to HTTPS" enabled="false" stopProcessing="true">
   <match url="(.*)" />
   <conditions>
    <add input="{HTTPS}" pattern="^OFF$" />
   </conditions>
   <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
  </rule>
 </rules>
</rewrite>
An Ort und Stelle eingetragen wo es laut Beispielen hin soll bekomme ich auf einem 2008er (Virtuell, bei 1&1) den Error 505. (»Ich« habe noch einen 2012er - auch Virtuell, Strato -, da steht dasselbe an; den lasse ich aber im Moment & jetzt in Ruhe.)

Muss ich noch an anderen Schrauben drehen damit diese Eintragung greift?

Aus anderen Quellen und Ratschlägen habe ich dort diese web.config aktiv:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
            <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
            <mimeMap fileExtension=".webm" mimeType="video/webm" />
        </staticContent>
        <defaultDocument>
            <files>
                <clear />
                <add value="index.htm" />
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.html" />
                <add value="iisstart.htm" />
                <add value="default.aspx" />
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>
Die Weiterleitung hatte ich unterhalb </defaultDocument> eingehängt. Ein User hat seine web.config komplett gelöscht und nur meinen Beispielcode drin. Ist vllt. die Reihenfolge wichtig? (Auch hier will ich jetzt nicht mehr als nötig rumexperimentieren.)

CN8
 
ohne jetzt genau geprüft zu haben:

Code:
<rule name="Redirect to HTTPS" enabled="false" stopProcessing="true">

sollte hier nicht enabled="true" eingetragen sein? Vielleicht schaffe ich es heute Abend genauer anzuschauen.
 
Das habe ich auch überlegt. Der Tipp bei Google besagt, es würde bei der WebSite im Servermanager eine Rule zur Verfügung stehen, die müsste ich einschalten. Das wäre mir hier logisch.

Allerdings bin ich bei «https://{HTTP_HOST}/{R:1}» hängen geblieben.
was exakt muss ich dort eintragen? Ich habe das als Systemvariable aufgefasst, offenbar muss da Klartext hin, nur was genau, ‹www.meineurl.de›? Oder ohne www? Und das R:1 kapiere ich noch weniger, im Verbund mit dem /.

CN8


Gemäß anderer Ratschläge musste ich noch eine ServerRole für das HTTP-Weiterleiten aktiviern - sie war inaktiv.
→ Aber darum muss man erst per Zufall stoßen. Siehe weiter unten.

Hat aber nichts genützt. Selbst nicht mit diesem Muster:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to https" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://www.meineurl.de" redirectType="Permanent" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Da muss doch noch was in Einstellungen nicht auf Vordermann sein: das waren 2 Einstellungen die man ändern musste, da wirds bestimmt noch mehr geben??!
 
Zuletzt bearbeitet:
Funktioniert deine Seite überhaupt mit HTTPS (Zertifikat korrekt konfiguriert ist)? Hast du SChannel Meldungen in der Ereignisanzeige? Der HTTP 505 deutet darauf hin. Was ist denn die vollständige Meldung??

Für den 2008er hast du das URL Rewrite Modul installiert?
https://www.microsoft.com/de-de/download/details.aspx?id=7435
HTTP Weiterleitung ist etwas anderes und wird auch anders konfiguriert!
Der Einfachheit halber kannst du im iis Manager schauen ob du in der Website url rewrite auswählen kannst, wenn nicht hast du das modul nicht installiert.

https://{HTTP_HOST}/{R:1}
-> {HTTP_HOST} gibt den aktuellen host Header wert an
-> R:N ist eine variable
Was es da so gibt, siehe hier https://docs.microsoft.com/en-us/ii...rence#Accessing_URL_Parts_from_a_Rewrite_Rule

Wenn du in deinem ersten Beispiel das einfach so nur in der web.config hast, funktioniert das nicht, die rewrite regel sollte unterhalb von
<configuration>
<system.webServer>
sein. Dann finde ich beim match die klammern komisch, würde sagen das passt nicht. Das die Regel nicht aktiviert ist wurde ja schon erwähnt

Dein zuletzt gepostetes Beispiel sollte funktionieren, sehe da kein Fehler aber das meineurl musst du natürlich anpassen. Aber lässt sich auch deutlich simpler mit der HTTP Weiterleitung umsetzen als mit URL Rewrite (also so wie im Beispiel wird halt einfach fix auf die HTTPS Adresse umgeleitet, angesprochene URL wird nicht beachtet).
 
Sorry für die verzögerte Antwort, aber wie üblich im Beruf muss man die Baustellen wechseln und lässt das liegen das am wenigsten brennt.

Ein Dankeschön für die Erklärungen.

Ich fasse die Hiweise und Anforderungen kurz zusammen. Habe gestern Abend mit einem 2012er Server probiert. URL-Rewrite existierte dort schon und ich konnte nach Kochrezept die Dialoge bedienen.
Danke für die Bestätigung, dass {HTTP_HOST} eine Art Variable ist und kein Platzhalter der ersetzt werden muss, das habe ich heute Morgen selbst rausfinden müssen bis dann der 2012er das tat was er sollte. So weit wenigstens…
Dann habe ich URL-Rewrite auf dem 2008 installiert und das Prozedere wiederholt, um kurzerhand den oben entsprechenden Codeblock (natürlich mit den bewussten Vorspann- und Abspann-Zeilen die ich kurzerhand wegließ; danke auch darauf hinzuweisen) einzukleben worauf auch der 2008 grundsätzlich das tat was er sollte.

Große Katastrophe
Auf den WIN-Servern soll eine Software laufen die in Form eines FORM-Tags…
<FORM onSubmit="return submitIt(this)" Method="POST" Action="http://www.website.com/cgi-bin/ExeFile.EXE">
…ausgelöst wird. Wie man sieht steht dort noch http ohne s drin (existente »alte« Seiten umzubauen wäre eher unschöne Arbeit) - ich habe noch nicht testen können ob es allein daran liegt.
Annahme: Ja. Was kann ich drehen um sowohl diese Weiterleitung von HTTP auf HTTPS zu haben und die Software am Laufen zu erhalten?

CN8

Gerade noch Zeit zum Testen gehabt. Mit HTTPS und der Weiterleite-Regel funktioniert es (bzw.mit HTTPS allein). Das wäre jetzt relativ blöd wenn ich »einige« Seiten ändern müsste… Einige ganz viele… Und mit Pech nicht Datei/Ordnerübergreifend…
 
Zuletzt bearbeitet:
Die Weiterleitung auf https://{HTTP_HOST}/{R:1} machen sollte ausreichen um alle URLs umzuleiten

Allerdings wird es ein Problem geben wenn du mehrere Seiten mit kompletten links anstatt relativen pfaden hast könntest du auf das Problem stoßen das diverse Browser Warnungen melden wie "unsichere Inhalte laden" ausspucken und deine fixen http links eben nicht laden. Sauber lösbar ist das nur wenn du in deiner Anwendung relative pfade nutzt
 
Zurück
Oben