IIS'te HTTPS yönlendirmesi için en yaygın yöntem, Microsoft'un ücretsiz URL Rewrite modülüdür. Modül kurulu değilse web.config içindeki kural 500 hatasına yol açar; önce IIS Manager'da sitenin özelliklerinde "URL Rewrite" simgesinin göründüğünü kontrol edin.
web.config kuralı
Sitenin kök dizinindeki web.config dosyasında system.webServer altına ekleyin:
<rewrite>
<rules>
<rule name="HTTP to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" appendQueryString="true" />
</rule>
</rules>
</rewrite>
redirectType="Permanent" 301 yanıtı üretir. Sorgu dizesi appendQueryString ile korunur.
Arayüzden eklemek
- IIS Manager > siteyi seçin > URL Rewrite > Add Rule(s).
- "Blank rule" seçin; Pattern olarak
(.*), koşul olarak{HTTPS}için^OFF$girin. - Action türünü Redirect, URL'yi
https://{HTTP_HOST}/{R:1}, türü "Permanent (301)" yapın.
Önemli not: "Require SSL" ile karışmasın
SSL Settings bölümündeki "Require SSL" kutusunu işaretlerseniz HTTP istekleri yönlendirilmez, 403.4 hatası alır. Yönlendirme istiyorsanız bu kutuyu işaretlemeyin ya da özel bir 403.4 hata sayfasıyla yönlendirme yapın.
Sık hatalar
- HTTP Error 500.19: URL Rewrite modülü kurulu değildir veya XML biçimi bozuktur.
- Döngü: Yük dengeleyici TLS'i sonlandırıyorsa koşulu
HTTP_X_FORWARDED_PROTOsunucu değişkenine göre yazın. - Bağlama yok: Sitede 443 için sertifikalı bir HTTPS binding bulunmalıdır.
Test ve geri alma
Kuralı eklemeden önce web.config dosyasının bir kopyasını alın. Kural sonrasında curl -I http://example.com/ komutuyla 301 yanıtını ve Location başlığını doğrulayın. Sorun çıkarsa yedeği geri yüklemeniz yeterlidir; IIS değişikliği otomatik algılar, yeniden başlatma gerekmez. Uygulama havuzu yeniden başlarsa oturumlar sıfırlanabileceğinden değişikliği yoğun saatlerde yapmayın.
Sertifika kurulumunu tamamlamak için SSL sertifikaları sayfasından ürün seçebilir, sonucu SSL kontrol aracıyla test edebilirsiniz.