2012-01-17 10 views
13

Ho un file web.config che invia automaticamente il traffico a HTTPS. Tuttavia, se qualcuno entra in MyDomain.com, passerà allo https://mydomain.com e se qualcuno accede a www.mydomain.com, passerà allo https://www.mydomain.com.Web.config. Reindirizza tutto il traffico su www.my ... Usando l'elemento rules.

Voglio TUTTO il traffico per andare a https://www.mydomain.com. È possibile ciò usando l'elemento rules di web.config? Il mio file attualmente appare così:

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

+0

Chiunque? In alternativa, consiglierei anche su come utilizzare la GUI di IIS. – Paul

risposta

23

La Regola

<rule name="Redirect to www subdomain"> 

    <match url=".*" /> 

    <conditions logicalGrouping="MatchAll"> 
    <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" /> 
    <add input="{SERVER_PROTOCOL}" pattern="^(.*)(/.*)?$"/> 
    </conditions> 

    <action type="Redirect" url="{C:1}://www.{HTTP_HOST}/{R:0}" redirectType="Permanent"/> 

</rule> 

Spiegazione della Regola

  • <match /> Limiti una regola per solo le richieste il cui percorso e di corrispondenza della query stringa il modello dato. Nel nostro caso vogliamo abbinare tutti i percorsi e interrogare le stringhe poiché reindirizzeremo in base al dominio.

  • <conditions /> Limita una regola anche solo alle richieste corrispondenti che soddisfano le condizioni date. La prima condizione esclude le richieste il cui dominio inizia già con "www". La seconda condizione esiste solo per il backreference {C: 1} e non dovrebbe filtrare nulla.

  • <action> ante "www." al dominio e quindi reindirizza.

Variabili

  • {R:0} è un backreference alla piena partita dal tag <match \>. Il riferimento all'indietro dovrebbe contenere solo il percorso e la stringa di interrogazione poiché si tratta di tutte le corrispondenze con <match \> mai confrontate.

  • {C:1} è un riferimento al primo gruppo di corrispondenza dall'ultima condizione. Questo dovrebbe contenere tutto fino alla "/" nella variabile {SERVER_PROTOCOL}.

  • {HTTP_HOST} è una variabile del server che contiene il dominio richiesto. (Vedere here per un elenco completo.)

  • {SERVER_PROTOCOL} un'altra variabile del server. Il suo formato dovrebbe essere "{protocollo}/{numero versione}".

Altre opzioni

  • <action redirectType> può essere temporanea, trovato o SeeOther. (Vedere here per ulteriori informazioni.)

  • <conditions logicalGrouping> può essere MatchAll o MatchAny.

Conclusione

Per una spiegazione più completa si veda here.

+0

Aggiungiamo questa regola o sostituiamo i poster? –

+0

Grazie mille! Vorrei chiedere come hai potuto mantenere questo, reindirizza come una scimmia campione! MA non reindirizzare SE il dominio contiene cioè: "bypdm.com" quelli sono gli url temporali che usiamo per mostrare il client e non hanno una configurazione www in IIS? – Tim

+3

Non vorreste 'redirectType =" Permanent "' per un reindirizzamento 301? – ajbeaven

Problemi correlati