C’è un modo pulito per redirect tutti i tentativi di andare a una versione HTTP: // di un sito al suo HTTPS: // equivalente?
Penso che il modo più pulito sia come descritto qui su IIS-aid.com . È solo web.config e quindi se cambi server non devi ricordare tutti i passi che hai fatto con la pagina di errore personalizzata 403.4 o altre autorizzazioni speciali, funziona.
La soluzione più semplice e pulita che ho trovato è stata
In Impostazioni SSL -> richiede SSL
In Pagine di errore -> Errore 403.4 -> Reindirizza al sito HTTPS
In Pagine di errore -> Modifica impostazioni caratteristiche … -> Imposta errori dettagliati per richieste locali e pagine di errore personalizzate per richiesta remota
Il vantaggio è che non richiede linee di codice aggiuntive. Il rovescio della medaglia è che ti reindirizza a un URL assoluto.
Un modo pulito cambia solo lo schema URL da http -> https e lascia tutto il resto equivalente. Dovrebbe essere lato server in modo che non ci siano problemi con il browser.
JPPinto.com ha istruzioni passo-passo su come è fatto, tranne che usano javascript (HttpRedirect.htm) invece di un reindirizzamento sul lato server. Per qualche motivo, non ho potuto ottenere IE eseguire il javascript se hai abilitato ‘Mostra messaggi di errore HTTP amichevoli’, che è attivo per impostazione predefinita. Un’altra cosa con lo script è che il reindirizzamento al percorso non ha funzionato nemmeno in FF o Chrome. Lo script reindirizza sempre a root. (Forse mi sono perso qualcosa, perché dovrebbe redirect al percorso.)
Per questi motivi ho utilizzato una pagina ASP per il reindirizzamento. Il rovescio della medaglia è ovviamente che ciò richiede che l’ASP classico sia abilitato sul server.
OpsanBlog ha uno script ASP e istruzioni che funzionano bene con IIS6.
Ho avuto alcuni problemi con questo metodo con IIS7. Problemi di interfaccia utente soprattutto, dal momento che IIS7 rende davvero facile perdere qualcosa.
Il gestore IIS dovrebbe mostrare il nome del file nell’intestazione.
global.asax
protected void Application_BeginRequest() { if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection) Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:")); }
Penso che con ‘cleanly’ intendi come con un reindirizzamento 300. Config per molti server e lingue qui .