Blog · 28 Ekim 2026
301 Yönlendirme Nedir? .htaccess, Nginx ve Site Taşımada Doğru Kullanım
301 yönlendirme, bir URL'nin kalıcı olarak başka bir adrese taşındığını tarayıcıya ve arama motorlarına bildiren HTTP durum kodudur. Eski adresi ziyaret eden kullanıcı otomatik olarak yeni adrese gönderilir; Google da zamanla eski URL yerine yeni URL'yi dizine alır ve eski sayfanın biriktirdiği sıralama sinyallerini yeni adrese aktarır. Kısacası 301, "bu sayfa artık burada değil, kalıcı olarak şurada" demenin standart yoludur.
Bu rehberde 301 yönlendirmenin diğer yönlendirme türlerinden farkını, hangi durumlarda kullanılması gerektiğini, Apache sunucularda .htaccess yönlendirme ve Nginx ile nasıl yazılacağını, yönlendirme zinciri ve döngüsü gibi sık yapılan hataları ve site taşırken uygulanacak kontrol listesini adım adım anlatıyoruz.
301 yönlendirme nasıl çalışır?
Bir tarayıcı ya da Googlebot bir URL'yi istediğinde sunucu önce bir durum kodu döner. Sayfa yerindeyse bu kod 200'dür. Sayfa kalıcı olarak taşınmışsa sunucu 301 kodunu ve yanında yeni adresi içeren bir Location başlığını gönderir. Tarayıcı bu başlığı okur ve hiçbir şey sormadan yeni adrese ikinci bir istek yapar. Kullanıcı açısından tek fark, adres çubuğundaki URL'nin değişmesidir.
Örnek bir sunucu cevabı şöyle görünür:
HTTP/1.1 301 Moved Permanently
Location: https://ornek.com/yeni-sayfa/
Arama motorları açısından 301'in anlamı daha derindir. Google kalıcı yönlendirmeyi, hedef URL'nin kanonik (asıl) adres olması gerektiğine dair güçlü bir sinyal olarak kabul eder. Bu nedenle eski adres zamanla dizinden çıkar, yerini yeni adres alır ve eski adrese verilmiş bağlantıların değeri büyük ölçüde yeni adrese yansır.
301, 302, 307, 308 ve meta refresh farkı
Yönlendirme türleri iki soruya göre ayrılır: değişiklik kalıcı mı geçici mi, ve tarayıcı isteğin yöntemini (GET, POST gibi) korumak zorunda mı? Aşağıdaki tablo farkları özetliyor.
| Tür | Anlamı | Kalıcılık | Google'a etkisi | Tipik kullanım |
|---|---|---|---|---|
| 301 | Moved Permanently | Kalıcı | Hedef URL kanonik kabul edilir | URL değişikliği, alan adı taşıma, http'den https'ye geçiş |
| 308 | Permanent Redirect | Kalıcı, yöntemi korur | 301 ile aynı şekilde değerlendirilir | Form ve API uç noktalarının kalıcı taşınması |
| 302 | Found | Geçici | Eski URL dizinde kalmaya devam edebilir | Kampanya süresince geçici yönlendirme, A/B testi |
| 307 | Temporary Redirect | Geçici, yöntemi korur | 302 ile aynı şekilde değerlendirilir | Bakım sayfası, geçici uç nokta değişikliği |
| Meta refresh | HTML içinde sayfa yenileme | Gecikmeye bağlı | Anında olanı kalıcıya, gecikmeli olanı geçiciye yakın yorumlanır | Sunucu ayarına erişim olmayan son çare durumlar |
Pratikte şu ayrımı akılda tutmak yeterlidir: değişiklik kalıcıysa 301 (ya da 308), geçiciyse 302 (ya da 307) kullanın. Meta refresh ve JavaScript ile yapılan yönlendirmeler sunucu tarafı yönlendirme kadar güvenilir sinyal vermez; sayfanın önce yüklenmesini gerektirdiği için kullanıcıya da yavaş görünür. Sunucuya erişiminiz varsa bunları tercih etmeyin.
Tarayıcılar ve HSTS'den kaynaklanan 307
Tarayıcının geliştirici araçlarında "307 Internal Redirect" gibi bir kayıt görürseniz bu, sunucunuzun gönderdiği bir yönlendirme değildir. Site HSTS kullanıyorsa tarayıcı http isteğini kendi içinde https'ye çevirir ve bunu 307 olarak gösterir. Sunucunuzun gerçek cevabını görmek için aşağıda anlatılan komut satırı testini kullanın.
301 yönlendirme SEO değerini aktarır mı?
Evet. Google, sunucu tarafı kalıcı yönlendirmelerin sıralama sinyallerini hedef URL'ye aktardığını açıkça belirtir; geçmişte konuşulan "her yönlendirmede belli bir değer kaybı" kuralı bugün geçerli bir rehber değildir. Yine de aktarımın sağlıklı olması için bazı koşullar vardır:
- Hedef sayfa konu olarak eşdeğer olmalı. Eski bir ürün sayfasını ilgisiz bir ana sayfaya yönlendirirseniz Google bunu "yumuşak 404" gibi değerlendirebilir ve değer aktarımı zayıflar.
- Yönlendirme kalıcı tutulmalı. Google'ın site taşıma önerisi, yönlendirmeleri en az bir yıl, mümkünse süresiz yerinde bırakmaktır. Eski adrese gelen dış bağlantılar yıllarca trafik getirmeye devam eder.
- Diğer sinyaller çelişmemeli. Yeni sayfanın canonical etiketi, iç bağlantıları ve site haritası da yeni adresi göstermelidir. Canonical etiketin yönlendirmeyle nasıl birlikte çalıştığını canonical URL rehberinde ayrıntılı anlattık.
Geçiş döneminde trafikte kısa süreli dalgalanma görmek normaldir; Google'ın yeni adresleri tarayıp eski adreslerle eşleştirmesi zaman alır. Dalgalanma haftalar sonra da düzelmiyorsa yönlendirme haritasında hata aramak gerekir.
Ne zaman 301 yönlendirme kullanılmalı?
1. URL yapısı değiştiğinde
Kategori adını değiştirdiniz, tarih içeren adreslerden düz adreslere geçtiniz ya da bir yazının slug'ını düzelttiniz. Her eski URL, aynı içeriğin yeni adresine tek tek 301 ile yönlendirilmelidir. Toplu değişikliklerde düzenli ifade (regex) kuralları işinizi kolaylaştırır.
2. Alan adı taşırken
Marka değişikliği veya alan adı uzantısı değişikliği gibi durumlarda eski alan adındaki her sayfa, yeni alan adındaki karşılığına yönlendirilmelidir. Tüm sayfaları yeni ana sayfaya yönlendirmek en sık yapılan ve en pahalı hatadır.
3. http'den https'ye geçerken
SSL sertifikası kurulduktan sonra sitenin http sürümüne gelen tüm istekler https sürümüne 301 ile gönderilmelidir. Aksi halde aynı içerik iki ayrı adreste erişilebilir kalır ve sinyaller bölünür.
4. www ve www'suz sürümü birleştirirken
"ornek.com" ile "www.ornek.com" teknik olarak iki farklı adrestir. Birini tercih edip diğerini ona kalıcı olarak yönlendirin. Aynı mantık sondaki eğik çizgi (slash) için de geçerlidir: "/hizmetler" ve "/hizmetler/" adreslerinden biri seçilmeli, diğeri ona yönlendirilmelidir.
5. Silinen sayfa için en yakın karşılık varsa
Bir ürünü satıştan kaldırdınız ama aynı ürünün yeni modeli ya da aynı kategoride benzer ürünler var. Bu durumda eski adresi en yakın karşılığa yönlendirmek hem kullanıcıyı hem de sayfanın kazandığı bağlantıları korur. Gerçek bir karşılık yoksa yönlendirme yapmak yerine sayfanın 404 veya 410 döndürmesine izin vermek daha dürüst ve daha doğru bir sinyaldir. Bu kararın nasıl verileceğini 404 hatası rehberinde anlattık.
6. Birbiriyle yarışan iki sayfayı birleştirirken
Aynı kelime için iki zayıf sayfanız varsa, içerikleri güçlü olanda birleştirip zayıf olanı ona 301 ile yönlendirmek yaygın ve etkili bir düzeltmedir.
.htaccess yönlendirme örnekleri (Apache)
Apache ve LiteSpeed sunucularda yönlendirmeler genellikle sitenin kök dizinindeki .htaccess dosyasına yazılır. Bu dosyadaki bir yazım hatası tüm sitenin 500 hatası vermesine yol açabileceği için düzenlemeden önce mutlaka yedek alın.
Tek bir sayfayı yönlendirmek
Redirect 301 /eski-sayfa/ https://ornek.com/yeni-sayfa/
http'yi https'ye ve www'yu www'suz sürüme yönlendirmek
İki kuralı tek adımda birleştirmek, aşağıda anlatılan yönlendirme zincirini önler:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.ornek\.com$ [NC]
RewriteRule ^(.*)$ https://ornek.com/$1 [L,R=301]
Bir klasörü toplu olarak taşımak
RewriteEngine On
RewriteRule ^blog/2024/(.*)$ /blog/$1 [L,R=301]
Eski alan adını yeni alan adına sayfa sayfa yönlendirmek
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?eskialan\.com$ [NC]
RewriteRule ^(.*)$ https://yenialan.com/$1 [L,R=301]
Bu kural yolu korur: "eskialan.com/hizmetler/" adresi "yenialan.com/hizmetler/" adresine gider. URL yapısı da değişiyorsa genel kuraldan önce sayfa bazlı kuralları yazın; Apache kuralları yukarıdan aşağıya işler.
WordPress gibi sistemlerde .htaccess dosyasında sistemin kendi kuralları da bulunur. Kendi yönlendirmelerinizi bu bloğun üstüne yazın; aksi halde istek yönlendirme kuralınıza ulaşmadan sistem tarafından işlenebilir.
Nginx yönlendirme örnekleri
Nginx .htaccess dosyası okumaz; yönlendirmeler sunucu yapılandırma dosyasına yazılır ve değişiklikten sonra yapılandırmanın yeniden yüklenmesi gerekir. Nginx'te en temiz yöntem return 301 kullanmaktır.
http'yi https'ye ve www'yu www'suz sürüme yönlendirmek
server {
listen 80;
server_name ornek.com www.ornek.com;
return 301 https://ornek.com$request_uri;
}
server {
listen 443 ssl;
server_name www.ornek.com;
# ssl sertifika satırları
return 301 https://ornek.com$request_uri;
}
Tek bir sayfayı yönlendirmek
location = /eski-sayfa/ {
return 301 /yeni-sayfa/;
}
Klasörü düzenli ifadeyle taşımak
location ~ ^/blog/2024/(.*)$ {
return 301 /blog/$1;
}
Değişiklikten sonra nginx -t komutuyla yapılandırmayı test edin, hata yoksa yeniden yükleyin. Yüzlerce satırlık eşleme gerekiyorsa her biri için ayrı location bloğu yazmak yerine Nginx'in map yönergesiyle bir eşleme tablosu kullanmak daha okunaklı ve bakımı kolay bir yoldur.
Yönlendirme zinciri ve döngüsü
Yönlendirme zinciri, bir URL'nin hedefe tek adımda değil birden fazla ara adresten geçerek ulaşmasıdır. Örneğin:
http://www.ornek.com/urun
-> https://www.ornek.com/urun
-> https://ornek.com/urun
-> https://ornek.com/urun/
Her ara adım sayfanın açılışını geciktirir ve tarayıcıların işini zorlaştırır. Google'ın belgelerine göre Googlebot bir zincirde sınırlı sayıda adımı izler; sınır aşılırsa hedef taranmaz. Zincirler genellikle zamanla birikir: http'den https'ye kural eklenir, sonra www kaldırılır, sonra URL yapısı değişir ve her katman bir öncekinin üstüne eklenir. Çözüm, her eski adresin doğrudan son hedefe tek adımda gitmesini sağlamaktır.
Yönlendirme döngüsü ise A adresinin B'ye, B'nin de tekrar A'ya yönlendirilmesidir. Tarayıcı bu durumda "çok fazla yönlendirme" hatası verir ve sayfa hiç açılmaz. Döngülerin en yaygın nedeni, aynı kuralın hem sunucu yapılandırmasında hem de içerik yönetim sisteminin ayarlarında birbirine zıt biçimde tanımlanmasıdır. Örneğin sunucu www'yu kaldırırken sistem ayarlarında site adresi www'lu yazılıysa döngü oluşur.
Zincir ve döngüleri bulmanın en pratik yolu, sitenin tüm iç bağlantılarını tarayıp 3xx dönen adresleri listelemektir. İç bağlantılarınız hiçbir zaman yönlendirilen bir adrese işaret etmemelidir; menü, alt bilgi ve içerik içi bağlantıları doğrudan son adrese güncelleyin. Bu tür taramaları diğer teknik kontrollerle birlikte teknik SEO denetimi rehberinde bulabilirsiniz.
Yönlendirmeyi test etme: curl -I
Bir yönlendirmenin doğru durum kodunu verip vermediğini görmenin en güvenilir yolu komut satırıdır, çünkü tarayıcılar eski yönlendirmeleri önbellekte tutar ve yanıltıcı sonuç gösterebilir. Yalnız başlıkları getirmek için:
curl -I http://www.ornek.com/eski-sayfa/
Çıktının ilk satırında 301, Location satırında ise beklediğiniz adres görünmelidir. Zincirin tamamını görmek için -L parametresini ekleyin:
curl -sIL http://www.ornek.com/eski-sayfa/ | grep -iE "^(HTTP|location)"
Bu komut her adımın durum kodunu ve gittiği adresi sırayla listeler. İdeal çıktıda tek bir 301 ve ardından 200 görürsünüz. İki veya daha fazla 301 varsa zincir vardır. Google'ın sayfayı nasıl gördüğünü doğrulamak için Search Console'daki URL denetleme aracını da kullanabilirsiniz.
Site taşıma kontrol listesi
Alan adı değişikliği ya da büyük bir URL yapısı değişikliği, yanlış yapıldığında organik trafiğin aylarca toparlanamamasına yol açabilir. Aşağıdaki sırayı izleyin.
Taşımadan önce
- Tüm eski URL'lerin listesini çıkarın. Site haritası, Search Console'daki sayfa raporu, analiz aracınızdaki açılış sayfaları ve dış bağlantı alan sayfalar birlikte değerlendirilmelidir. Yalnız site haritasına güvenmek, eski ama hâlâ trafik alan adresleri kaçırmanıza neden olur.
- Eski-yeni eşleme tablosu hazırlayın. Her eski URL için tek bir yeni hedef belirleyin. Karşılığı olmayan sayfaları ayrıca işaretleyin.
- Performans referansını kaydedin. Taşımadan önceki son 3 ayın tıklama, gösterim ve en çok trafik alan sayfa verilerini dışa aktarın. Taşıma sonrası kıyas bu veriyle yapılır.
- Yeni siteyi test ortamında kontrol edin. Test ortamının dizine eklenmesini engelleyin, ancak canlıya alırken bu engeli kaldırmayı unutmayın.
Taşıma günü
- Eşleme tablosundaki yönlendirmeleri sunucuya ekleyin ve örneklem üzerinde
curl -Iile test edin. - Yeni sitedeki canonical etiketlerin, hreflang etiketlerinin ve iç bağlantıların yeni adresleri gösterdiğinden emin olun.
- Yeni site haritasını hazırlayın ve Search Console'a gönderin.
- Yeni alan adını Search Console'da mülk olarak ekleyip doğrulayın; Google Analytics ve Tag Manager ayarlarındaki alan adı tanımlarını güncelleyin.
- Alan adı değişiyorsa Search Console'daki adres değişikliği aracıyla Google'a taşınmayı bildirin.
Taşımadan sonra
- İlk iki hafta boyunca Search Console'da tarama hatalarını ve 404 raporlarını her gün kontrol edin.
- Eski adreslerin dizinden çıkıp yenilerin girdiğini sayfa raporunda izleyin.
- Taşıma öncesi referans verisiyle sayfa bazında kıyas yapın; trafik kaybı yaşayan sayfaların yönlendirmesini tek tek kontrol edin.
- Size dış bağlantı veren önemli sitelerden bağlantıyı yeni adrese güncellemelerini isteyin.
- Eski alan adının kaydını yenilemeye devam edin; alan adı düşerse tüm yönlendirmeler ve aktarılan değer kaybolur.
Taşıma sonrasında kalıcı bir düşüş görüyorsanız sorunu yönlendirmelerle mi yoksa başka bir etkenle mi ilgili olduğunu ayırmak için trafik düşüşü teşhis rehberindeki adımları izleyebilirsiniz. Taşıma öncesi ve sonrası dönemi sayfa ve sorgu bazında yan yana karşılaştırmak, SEO Analytics gibi Search Console verisini dönem kıyaslı gösteren bir panelle çok daha hızlı yapılır.
Search Console adres değişikliği aracı
Search Console'un ayarlar bölümünde yer alan adres değişikliği aracı, bir alan adından başka bir alan adına taşındığınızı Google'a doğrudan bildirmenizi sağlar. Aracı kullanmadan önce bilmeniz gerekenler:
- Araç yalnızca alan adı düzeyindeki taşımalar içindir. http'den https'ye geçiş, www birleştirme veya aynı alan adı içinde URL değişikliği için kullanılmaz; bu durumlarda 301 yönlendirmeler yeterlidir.
- Hem eski hem yeni alan adının Search Console'da doğrulanmış mülk olması gerekir.
- Araç, eski sitenin ana sayfası ve bazı örnek sayfaların 301 ile yeni siteye yönlendirildiğini kontrol eder. Yönlendirmeler hazır değilse bildirim kabul edilmez.
- Bildirim yönlendirmelerin yerine geçmez; yalnızca Google'ın taşınmayı daha hızlı fark etmesine yardım eder.
Search Console'un diğer raporlarını ve mülk türlerini Google Search Console rehberinde inceleyebilirsiniz.
Sık yapılan 301 hataları
- Tüm eski sayfaları ana sayfaya yönlendirmek. Kullanıcı aradığını bulamaz, Google da bu yönlendirmeleri çoğunlukla yumuşak 404 olarak değerlendirir.
- Kalıcı değişiklikte 302 kullanmak. Bazı eklentiler ve paneller varsayılan olarak 302 üretir. Kalıcı bir taşımada durum kodunu mutlaka kontrol edin.
- Yönlendirmeleri birkaç ay sonra kaldırmak. Eski adreslere gelen bağlantılar ve yer imleri yıllarca yaşar.
- Sorgu parametrelerini kaybetmek. Kampanya parametreleriyle gelen trafikte yönlendirme parametreleri düşürüyorsa analiz verileriniz bozulur. Nginx'teki
$request_uriparametreleri korur; Apache'de RewriteRule varsayılan olarak sorgu dizesini korur. - Site haritasında yönlendirilen adresleri bırakmak. Site haritası yalnızca 200 dönen, kanonik adresleri içermelidir.
- Yönlendirilen adresleri robots.txt ile engellemek. Googlebot engellenen bir URL'yi tarayamadığı için yönlendirmeyi de göremez.
Sık sorulan sorular
301 yönlendirme ne kadar süre kalmalı?
Google en az bir yıl yerinde tutulmasını önerir; pratikte mümkünse süresiz bırakmak en güvenli yoldur. Yönlendirme kuralları sunucuya neredeyse hiç yük getirmez, kaldırıldıklarında ise eski bağlantılardan gelen trafik ve değer kaybolur.
301 mi 308 mi kullanmalıyım?
Sıradan sayfa taşımalarında ikisi arasında SEO açısından fark yoktur ve 301 en yaygın, en iyi desteklenen seçenektir. Form gönderimi veya API isteği gibi POST yöntemiyle çalışan adresleri kalıcı olarak taşıyorsanız isteğin yönteminin korunması için 308 tercih edilir.
301 yönlendirme sonrası trafik neden düştü?
Kısa süreli dalgalanma, Google'ın yeni adresleri işlemesi sırasında normaldir. Kalıcı düşüşün en yaygın nedenleri; sayfaların ilgisiz hedeflere yönlendirilmesi, zincirler, 302 kullanılması, iç bağlantıların ve canonical etiketlerin eski adreslerde kalması ve bazı önemli sayfaların eşleme tablosundan unutulmasıdır.
.htaccess yönlendirme çalışmıyorsa ne kontrol edilmeli?
Önce sunucunun gerçekten Apache veya LiteSpeed olduğunu ve rewrite modülünün açık olduğunu doğrulayın; Nginx .htaccess dosyasını okumaz. Ardından kuralın sistemin kendi kurallarından önce yazıldığını, tarayıcı önbelleğinin sonucu yanıltmadığını curl -I ile ve dosyada yazım hatası olmadığını kontrol edin.