2014-09-10 12 views
5

ho bisogno di reindirizzare tutte le richieste https a http, per esempio, se un utente visita https://www.example.com/another-page/-http://www.example.com/another-page/IIS Rewrite Rule nel web.config per reindirizzare le richieste HTTPS a HTTP

Ho la seguente regola di riscrittura nel mio web.config adesso, ma non funziona correttamente. Sta reindirizzando https://www.example.com/another-page/ a https://www.example.com/, quindi alla radice del sito, ma invece voglio che il reindirizzamento rimanga nello stesso URL e riscrivi solo https su http.

<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> 

Qualsiasi aiuto su come modificare la regola di cui sopra in modo che cambia solo https a http, ma mantiene l'URL completo visitato sarebbe molto apprezzato!

+1

Qual è l'uso di '' ? – cheesemacfly

+0

Estremamente correlato, anche se questa domanda non è tecnicamente un duplice: http://stackoverflow.com/questions/9823010/how-to-force-https-using-a-web-config-file –

risposta

2

Si prega di incollare il codice sottostante nel file web.config.

+0

Grazie, ma come indicato nel domanda, il sito è in esecuzione su IIS non Apache, quindi nessun file .htaccess. Invece sto usando un file web.config e il modulo di riscrittura di IIS. – IntricatePixels

+0

Siamo spiacenti. Si prega di utilizzare il codice modificato. –

11

Ho impostato la regola, ripulito un po 'e ha funzionato; quindi questo non è davvero la risposta con molto di nuovo.

Suggerimento: rimuovere la condizione di input onepage solo per il test, come suggerito da cheesmacfly nel commento della domanda.

Inoltre, provare a modificare l'azione su {R:1} anziché su {R:0}. In questo caso non dovrebbe essere importante, ma mi piace usare 1 e su, per abbinare il gruppo di cattura specifico. R: 0 significa l'intera stringa abbinata, che mi confonde sempre un po '.

<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> 

Una possibilità è che il browser abbia memorizzato nella cache un tentativo precedente delle regole. Quando il redirectType è permanente, e stai ancora sviluppando o testando, il browser spesso memorizza nella cache una regola precedente. Cancella la cache del browser e/o rimuovi il permanente e/o naviga in modalità di navigazione in incognito. Al termine del test, cambialo in permanente. Vedere i numeri 2 e 3 in questa risposta: https://stackoverflow.com/a/9204355/292060

+0

Questa è la risposta corretta, grazie – Rippo

Problemi correlati