2014-04-25 14 views
6

Ho il seguente codice nella mia web-config per poter reindirizzare sia gli URL con il prefisso "www" che le richieste non SSL alle https: // mydomain.com perché il certificato SSL è registrato al dominio senza il wwwURL Riscrivi per rimuovere www e reindirizzare a https utilizzando web-config (C# .net)

<rewrite> 
    <rules> 
    <rule name="Remove WWW prefix and redirect to https" > 
     <match url="(.*)" ignoreCase="true" /> 
     <conditions logicalGrouping="MatchAny"> 
     <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" ignoreCase="true" /> 
     <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
     </conditions> 
     <action type="Redirect" redirectType="Permanent" url="https://mydomain.com/{R:1}" /> 
    </rule> 
    </rules> 
</rewrite> 

Questo è il risultato:

1) http: // mydomain.com/something - > https: // mydomain.com/something (corretto)

2) http: // www.mydomain.com/something -> https: // mydoma in.com/something (corretta)

3) https: // www.mydomain.com/something -> Mostra errore di certificato (C'è un problema con il certificato di protezione del sito web)

Quando si seleziona. "Continua su questo sito (non raccomandato)." nella pagina di errore del certificato, l'url viene riscritto correttamente (https: // mydomain.com/something)

Come posso essere sicuro che l'errore del certificato non venga visualizzato?

Grazie

risposta

0

non sono sicuro su questo, come non ho troppa esperienza con url-rewriting, ma cercando di aiutare abituato male.
Si può provare questo

<conditions> 
<add input="{HTTPS}" pattern="^OFF$" /> 
</conditions> 
<action type="Redirect" url="https://mydomain.com/{R:1}" redirectType="Permanent" /> 

Ho cercato su google un bel po 'e ho trovato questo, ma potrebbe non fare ciò che si intende per.

+0

Grazie, ma, purtroppo questo ha avuto lo stesso risultato. –

2

quindi lo usiamo nei nostri progetti e questo funziona.

Fatemi sapere è che aiuta:

<rewrite> 
    <rules> 
    <rule name="Redirect to https"> 
     <match url="(.*)"/> 
     <conditions> 
     <add input="{HTTPS}" pattern="Off"/> 
     <add input="{REQUEST_METHOD}" pattern="^get$|^head$" /> 
     <add input="{HTTP_HOST}" pattern="localhost" negate="true"/> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> 
    </rule> 
    </rules> 
</rewrite> 

ignora anche la richiesta quando si accede al sito sul computer locale.

+3

Questo non rimuove www. – emzero

0

Un modo per risolverlo è quello di registrare due regole distinte:

  1. Rimuovere www.
  2. Forza HTTPS.

    <rule name="Remove www" stopProcessing="true"> 
        <match url="(.*)" negate="false"></match> 
        <conditions> 
        <add input="{HTTP_HOST}" pattern="^www\.(.*)$" /> 
        </conditions> 
        <action type="Redirect" url="https://{C:1}/{R:1}" appendQueryString="true" redirectType="Permanent" /> 
    </rule> 
    <rule name="Force HTTPS" enabled="true"> 
        <match url="(.*)" ignoreCase="false" /> 
        <conditions> 
        <add input="{HTTPS}" pattern="off" /> 
        </conditions> 
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> 
    </rule> 
    
0

Questo problema non può essere risolto utilizzando regole di riscrittura: il problema è che il certificato viene verificata al momento della connessione al server è configurato. Poiché il tuo server non ha un certificato valido per la variante www., il certificato non è valido e il browser avviserà l'utente.

Solo dopo l'utente si impegna a continuare, la richiesta viene inviata al server e le regole di riscrittura calci in.

Problemi correlati