Bir sitenin HTTP: // sürümüne gitme girişimlerini HTTPS: // eşdeğerine yeniden yönlendirmenin temiz bir yolu var mı?
Bir sitenin HTTP: // sürümüne gitme girişimlerini HTTPS: // eşdeğerine yeniden yönlendirmenin temiz bir yolu var mı?
Yanıtlar:
Bence en temiz yol, burada IIS-aid.com'da açıklandığı gibi . Yalnızca web.config'dir ve bu nedenle sunucuyu değiştirirseniz 403.4 özel hata sayfası veya diğer özel izinlerle uyguladığınız tüm adımları hatırlamak zorunda kalmazsınız, sadece çalışır.
<configuration>
<system.webServer>
<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="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Bulduğum en kolay ve temiz çözüm,
SSL Ayarlarında -> SSL gerektir
Hata Sayfalarında -> 403.4'te hata -> HTTPS sitesine yönlendir
Hata Sayfalarında -> Özellik Ayarlarını Düzenle ... -> Yerel istekler için Ayrıntılı hataları ve uzak istek için özel hata sayfalarını ayarlayın
Yararı, fazladan kod satırı gerektirmemesidir. Dezavantajı, sizi mutlak bir url'ye yönlendirmesidir.
Temiz bir yol, yalnızca URL şemasını http -> https'den değiştirir ve diğer her şeyi eşdeğer bırakır. Tarayıcı sorunu olmaması için sunucu tarafında olmalıdır.
JPPinto.com, sunucu tarafı yönlendirme yerine javascript (HttpRedirect.htm) kullanmaları dışında, bunun nasıl yapılacağına dair Adım Adım talimatlara sahiptir . Varsayılan olarak açık olan 'Açıklayıcı HTTP hata mesajlarını göster' etkinse, bazı nedenlerden dolayı IE'nin javascript'i çalıştırmasını sağlayamadım. Komut dosyasıyla ilgili başka bir şey de, yola yeniden yönlendirmenin FF veya Chrome'da bile çalışmadığıdır. Komut dosyası her zaman köke yönlendirir. (Belki bir şeyi gözden kaçırdım, çünkü yola yönlendirmesi gerekiyor.)
Bu nedenlerden dolayı yönlendirme için bir ASP sayfası kullandım. Elbette olumsuz yanı, klasik ASP'nin sunucuda etkinleştirilmesini gerektirmesidir.
OpsanBlog'un bir ASP betiği ve IIS6 ile iyi çalışan yönergeleri vardır.
IIS7 ile bu yöntemi kullanırken birkaç sorun yaşadım. IIS7 bir şeyi gözden kaçırmayı gerçekten kolaylaştırdığı için çoğunlukla kullanıcı arabirimi sorunları.
IIS yöneticisi, başlıkta dosya adını göstermelidir.
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:"));
}
Klasik asp (intranet) kullanıyorum ve oturum açma gerektiren sayfalarda oturum açma dahil dosyası yeniden yönlendirme yapıyor:
if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then
Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if
Bu elbette GET veya POST verilerini içermez. Yani aslında, güvenli sayfanıza temiz bir yönlendirme.