web.config ile 301 Yönlendirme Nasıl Yapılır (IIS)

Son gözden geçirme: Eylül 2026 · IIS 10 URL Rewrite resmî dokümanına göre, Plesk Obsidian 18.0 menü yolu panelde doğrulandı

Hızlı çözüm

web config 301 yönlendirme için sitenin kök klasöründeki web.config dosyasına, mevcut <system.webServer> bölümünün içine bir URL Rewrite kuralı eklenir ve kurala redirectType="Permanent" verilir.

  1. web.config dosyasının yedeğini indirin.
  2. Dosyayı Plesk’te Files → httpdocs → web.config → Edit in Code Editor ile açın.
  3. <rewrite><rules> bloğunu <system.webServer> içine yapıştırıp kaydedin.
  4. curl.exe -I ile yanıtın 301 döndüğünü doğrulayın.
Panel Plesk (Windows hosting) ya da IIS Yöneticisi (VDS)
Sistem IIS 10, Windows Server 2019/2022
Yetki Plesk abonelik kullanıcısı ya da sunucuda Administrator
Narhost ürünü Windows Hosting

Başlamadan önce

  • Mevcut web.config dosyasını bilgisayarınıza indirin. XML’deki tek bir yazım hatası bütün sitenin 500 hatası vermesine yol açar.
  • URL Rewrite modülü IIS’e ayrıca kurulur. VDS’te Test-Path "$env:windir\System32\inetsrv\rewrite.dll" komutu True dönmelidir.
  • Eski ve yeni adreslerin listesini hazırlayın; her eski adres tek bir yeni adrese gitmelidir.

web config 301 yönlendirme ne işe yarar

IIS .htaccess dosyasını okumaz; Linux hostingdeki yönlendirme kurallarının Windows karşılığı web.config dosyasıdır. 301 kalıcı taşındı anlamına gelir: tarayıcı ve arama motoru eski adresi bırakıp yeni adrese geçer, sıralama da zamanla yeni adrese aktarılır. Sayfa adı değiştiğinde, alan adı taşındığında ya da SSL sonrası HTTP trafiğini HTTPS’e çekerken kullanılır.

URL Rewrite yapılandırma başvurusuna göreredirectType dört değer alır: Permanent (301), Found (302), SeeOther (303) ve Temporary (307). Kalıcı taşımada yalnız Permanent kullanın. cPanel’li Linux hostingte aynı iş için bkz. cPanel’de 301 yönlendirme.

Adım adım web.config ile yönlendirme

  1. Dosyayı açın. Plesk’te Websites & Domains → Files yolunu izleyip httpdocs klasörüne girin, web.config satırındaki menüden Edit in Code Editor seçin. Plesk bu dosyayı hata sayfaları için kendisi oluşturur; içinde zaten bir <system.webServer> bölümü vardır. VDS’te dosya sitenin fiziksel yolundadır (varsayılan site için C:\inetpub\wwwroot).
    Web config 301 yönlendirme akış şeması — yedek, kural yeri, kural yazma ve curl ile doğrulama
    IIS'te kalıcı yönlendirme dört adımda kurulur: yedek alın, doğru bölümü bulun, kuralı yazın, yanıtı doğrulayın.
  2. Kuralları doğru yere yerleştirin. İkinci bir <system.webServer> açmayın; <rewrite> bloğunu var olanın içine ekleyin.
    <configuration>
      <system.webServer>
        <httpErrors> ... </httpErrors>
        <rewrite>
          <rules>
            <!-- kurallar buraya -->
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>

    Beklenen sonuç: dosyada tek bir <system.webServer> ve onun içinde tek bir <rules> listesi bulunur; aşağıdaki kurallar bu listeye eklenir.

  3. Tek sayfayı yönlendirin.match url değeri alan adından sonraki yoldur ve baştaki / işaretini içermez.
    <rule name="eski-sayfa-301" stopProcessing="true">
      <match url="^eski-sayfa\.html$" />
      <action type="Redirect" url="/yeni-sayfa/" redirectType="Permanent" />
    </rule>

    Beklenen sonuç: /eski-sayfa.html isteği /yeni-sayfa/ adresine 301 ile gider.

  4. HTTP trafiğini HTTPS’e çekin. SSL kurulu değilse bu kural siteyi açılmaz hâle getirir.
    <rule name="https-301" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>

    Beklenen sonuç: http:// ile gelen her istek aynı yolun https:// sürümüne gider.

  5. Eski alan adını yenisine taşıyın. Eski alan adı aynı siteye takma ad olarak bağlıysa bu kural bütün yolları korur.
    <rule name="alan-adi-301" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^(www\.)?eski-ornek\.com$" />
      </conditions>
      <action type="Redirect" url="https://www.ornek.com/{R:1}" redirectType="Permanent" />
    </rule>

    Yalnız www ile www’suz sürümü birleştirecekseniz kural yazmanız gerekmez: Plesk’te Hosting Settings → Preferred domain alanı aynı işi 301 ile yapar.

  6. Modül yoksa httpRedirect kullanın. Bütün siteyi başka bir alan adına taşırken httpRedirect öğesi URL Rewrite olmadan çalışır; IIS’in HTTP Redirection özelliği kurulu olmalıdır. Bu satırı hedef sitenin kendi web.config dosyasına koymayın, döngü oluşur.
    <httpRedirect enabled="true" destination="https://www.ornek.com" httpResponseStatus="Permanent" />

Doğrulama

Sonuç

Kendi bilgisayarınızda curl.exe -I http://ornek.com/eski-sayfa.html komutu HTTP/1.1 301 Moved Permanently ve doğru Location satırını döndürüyorsa web config 301 yönlendirme çalışıyordur. Tarayıcıda denerken gizli pencere kullanın; tarayıcılar 301 yanıtını önbellekte tutar.

Hâlâ çözülmediyse

  • Kaydettikten sonra site 500.19 hatası veriyor. XML’de kapanmayan bir etiket, çift <system.webServer> ya da kurulu olmayan URL Rewrite modülü vardır. Yedeği geri yükleyin ve kuralları tek tek ekleyin.
  • Tarayıcı ERR_TOO_MANY_REDIRECTS veriyor. HTTPS kuralı ile paneldeki bir yönlendirme çakışıyordur; bkz. SSL sonrası yönlendirme sorunları.
  • Kural hiç çalışmıyor. Dosya yanlış klasörde olabilir ya da site IIS’te farklı bir yolu gösteriyordur; bkz. IIS üzerinde site yayınlama.

Narhost desteği

Talebe şunları ekleyin: alan adınız, yönlendirmek istediğiniz eski ve yeni adres, curl.exe -I çıktısı ve web.config dosyasındaki <rewrite> bloğu.

Destek talebi aç

Sıkça sorulan sorular

Windows hostingte .htaccess ile yönlendirme yapabilir miyim?

Hayır. IIS .htaccess dosyasını okumaz; kuralları web.config içine URL Rewrite söz dizimiyle yazmanız gerekir.

301 ile 302 arasındaki fark nedir?

301 kalıcıdır ve arama motoru yeni adresi dizine alır. 302 geçicidir; eski adres dizinde kalır. Sayfa geri gelmeyecekse 301 kullanın.

Çok sayıda eski adresi tek tek yazmak zorunda mıyım?

Ortak bir kalıp varsa tek kural ve {R:1} yeterlidir. Kalıp yoksa URL Rewrite’ın rewriteMaps özelliğiyle eski-yeni adres listesini tek kuralda toplayabilirsiniz.

Bu makale sorununuzu çözdü mü?

Çözemediniz mi?

Teknik ekibimiz sunucu tarafındaki ayarları sizin için kontrol edebilir. Destek talebinizde alan adınızı ve aldığınız hata metnini paylaşmanız süreci hızlandırır.

Etiketler: iiswindows-server

İlgili çözümler