2014-09-10 10 views
5

Ich brauche alle HTTPS-Anfragen auf http umleiten, zum Beispiel, wenn jemand https://www.example.com/another-page/-http://www.example.com/another-page/IIS Rewrite-Regel in web.config HTTPS-Anfragen zu umleiten, um HTTP-

besucht habe ich folgende Rewrite-Regel in meinem web.config gerade jetzt, aber es funktioniert nicht richtig. Es wird https://www.example.com/another-page/ auf https://www.example.com/ umgeleitet, also zum Stamm der Site, aber stattdessen möchte ich, dass die Weiterleitung in der gleichen URL bleibt und nur https in http umschreibt.

<rule name="Redirect to HTTP" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{R:1}" pattern="^onepage/(.*)$" negate="true" /> 
     <add input="{HTTPS}" pattern="^ON$" /> 
    </conditions> 
    <action type="Redirect" url="http://{HTTP_HOST}/{R:0}" redirectType="Permanent" /> 
</rule> 

Jede Hilfe auf die oben genannte Regel zu ändern, so dass es nur https zu http ändert, behält aber die vollständige URL würde besucht sehr zu schätzen!

+1

Was ist die Verwendung von '' ? – cheesemacfly

+0

Extrem verwandt, obwohl diese Frage technisch gesehen kein Betrogener ist: http://stackoverflow.com/questions/9823010/how-to-force-https-using-a-web-config-file –

Antwort

2

Bitte fügen Sie den folgenden Code in web.config Datei.

<rule name="Redirect to http" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{HTTP}" pattern="off" ignoreCase="true" /> 
    </conditions> 
    <action type="Redirect" url="http://{HTTPS_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
</rule> 
+0

Danke, aber wie in der Frage, Website läuft auf IIS nicht Apache, also keine .htaccess-Datei. Stattdessen verwende ich eine web.config-Datei und das IIS-Rewrite-Modul. – IntricatePixels

+0

Entschuldigung. Bitte benutzen Sie den bearbeiteten Code. –

11

Ich habe Ihre Regel eingerichtet, aufgeräumt ein wenig, und es hat funktioniert; also antwortet das nicht wirklich mit viel Neuem.

Vorschlag: Entfernen Sie die onepage Eingabebedingung nur zum Testen, wie cheesmacfly im Fragekommentar vorgeschlagen.

Versuchen Sie auch, die Aktion auf {R:1} anstelle von {R:0} zu ändern. Es sollte in diesem Fall keine Rolle spielen, aber ich mag es einfach 1 und höher zu verwenden, um die spezifische Erfassungsgruppe zu erreichen. R: 0 bedeutet die gesamte übereinstimmende Zeichenfolge, die mich immer nur ein wenig verwirrt.

<rule name="Redirect to HTTP" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{HTTPS}" pattern="^ON$" /> 
    </conditions> 
    <action type="Redirect" url="http://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> 
</rule> 

Eine Möglichkeit ist, dass Ihr Browser einen vorherigen Versuch Ihrer Regeln zwischengespeichert hat. Wenn der redirectType permanent ist und Sie noch entwickeln oder testen, speichert der Browser häufig eine vorherige Regel. Löschen Sie den Cache Ihres Browsers und/oder entfernen Sie das permanente und/oder durchsuchen Sie den Inkognito-Modus. Wenn das Testen abgeschlossen ist, ändern Sie es in permanent. Siehe Nummer 2 und 3 in dieser Antwort: https://stackoverflow.com/a/9204355/292060

+0

Dies ist die richtige Antwort, danke – Rippo

Verwandte Themen