2016-01-19 30 views
8

Possiedo un sito Web/un'applicazione in cui le stesse pagine eseguono molti siti Web (a seconda dell'URL le pagine visualizzano logo/css/contenuto diversi ecc.). Sto cercando di forzare ogni dominio del sito web a reindirizzare a www. verison del dominio.Riscritto URL IIS - con più domini

ho usato la regola canonica di default per cominciare a URL Rewrite poi basta cambiato il modello URL Partita da:

(.*) 

A:

(^domain*) 

In modo che sarà solo fare questo per il non-www. versione del dominio corrente e non corrisponde per tutti i domini.

Il mio piano è quello di creare uno di questi per ogni dominio che utilizza il sistema per reindirizzare ciascuno al www. versione.

Quando eseguo il test del pattern in IIS, la regola corrisponde a (penso) che dovrebbe fare. Ma quando vado sul sito non lo reindirizza, rimane sul non www. versione.

Qualcuno sa dove sto andando male o se questo è anche possibile?

Grazie J.

UPDATE ho pensato di cercare di dare una spiegazione migliore:

Ho una messa a punto sito in IIS. Le pagine di questo sito web eseguono molti siti Web dello stesso tipo, lo stile, il logo e i prodotti su ciascun sito cambiano a seconda dell'URL.

Quindi dire che ho la seguente configurazione binding sul sito:

www.domain1.com, domain1.com, www.domain2.com, domain2.com, www.domain3.com, domain3.com

Il sito Web offrirà un sito Web di aspetto diverso, con contenuti, stili, ecc. Diversi a seconda dell'URL.

Se allora io uso il default 'dominio Nome canonico' regola di riscrittura degli URL devi scegliere un dominio a trasmettere al, quindi se ho scelto www.domain1.com aggiunge regola:

<rewrite> 
    <rules> 
     <rule name="CanonicalHostNameRule1"> 
      <match url="(.*)" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^www\.domain1\.com$" negate="true" /> 
      </conditions> 
      <action type="Redirect" url="http://www.domain1.com/{R:1}" /> 
     </rule> 
     </rules> 
</rewrite> 

Questo quindi inoltra tutto a www.domain1.com. Pertanto, se un utente visita domain2.com o www.domain2.com, verrà reindirizzato su www.domain1.com.

ho bisogno in modo che la gente si reindirizzati come segue:

domain1.com> www.domain1.com

domain2.com> www.domain2.com

domain3.com> www .domain3.com

Durante il test di nuovi siti Web da aggiungere a quelli esistenti, li abbiamo impostati su un dominio secondario, quindi ho anche bisogno di sottodomini per continuare a non essere reindirizzato.

Ma il problema è fare questo all'interno dello stesso file web/web.config.

risposta

3

provare il seguente (credito per @Atashbahar a https://stackoverflow.com/a/31955179/2664650):

<rewrite> 
    <rules> 
      <rule name="Add WWW" stopProcessing="true"> 
      <match url="^(.*)$" /> 
      <conditions> 
      <add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$" /> 
      </conditions> 
      <action type="Redirect" url="http://www.{C:0}{PATH_INFO}" redirectType="Permanent" /> 
     </rule> 
    </rules> 
</rewrite> 
+0

Ciao clorkster, grazie per la risposta, credo che sia così ottenuto che funziona, anche se una cosa che non ho menzionato è che è andato impostazione i siti web li abbiamo su un sottodominio, questo aggiunge anche un www. di fronte a ciò, conosci un modo per fermarlo? – JBoom

+0

Definitivamente. C'è un tld comune per tutti loro, o almeno un piccolo numero di loro? E il formato è sempre sottodominio.dominio.tld? – cl0rkster

+0

L'ho aggiunto aggiungendo una condizione "non corrisponde al modello" e reso il modello il sottodominio, devo aggiungerne uno per ogni sottodominio, il che va bene dato che è solo mentre il sito viene configurato. Grazie. – JBoom