Bir yazının kalıcı bağlantısını (permalink) değiştirdiğinizde, bir sayfayı sildiğinizde ya da tüm sitenizi yeni bir alan adına taşıdığınızda, eski adreslere gelen ziyaretçileri ve arama motorlarını yeni yerlerine göndermeniz gerekir. Aksi hâlde Google'da yıllardır sıralanan sayfalarınız bir anda 404 Bulunamadı hatasına düşer; hem ziyaretçi kaybedersiniz hem de o sayfaların biriktirdiği SEO değeri havada kalır. İşte bu geçişi düzgün yapmanın yolu 301 kalıcı yönlendirmedir.
Bu rehberde 301 ile 302 yönlendirme arasındaki farkı, WordPress'te hangi durumlarda yönlendirmeye ihtiyaç duyacağınızı ve bunu üç ayrı yöntemle — Redirection eklentisiyle tekli ve toplu kurallar, regex desenleri, 404 log takibi ve .htaccess ile manuel yönlendirme — nasıl kuracağınızı adım adım göstereceğim. Ayrıca çoğu kişinin gözden kaçırdığı iki kritik konuya, yani yönlendirme zincirlerini ve döngülerini önlemeye ve SEO değerinin doğru aktarıldığını nasıl doğrulayacağınıza da değineceğim.
301 ve 302 Yönlendirme Arasındaki Fark#
Yönlendirme, bir HTTP durum koduyla tarayıcıya "aradığın adres burada değil, şuraya git" demektir. En sık kullanılan iki kod 301 ve 302'dir ve aralarındaki fark hem SEO'yu hem de tarayıcı davranışını doğrudan etkiler.
301 – Kalıcı yönlendirme (Moved Permanently). Bu kod arama motoruna "bu adres kalıcı olarak taşındı, eski adresi unut ve bundan sonra hep yeni adrese git" der. Eski sayfanın biriktirdiği arama değerinin (link juice) büyük çoğunluğu yeni adrese aktarılır. Kalıcı bir değişiklik yaptıysanız — permalink değişti, sayfa taşındı, alan adı yenilendi — daima 301 kullanmalısınız.
302 – Geçici yönlendirme (Found / Moved Temporarily). Bu kod "bu yönlendirme geçici, asıl adres hâlâ eski adres" anlamına gelir. Google eski URL'yi dizinde tutmaya devam eder ve değeri yeni adrese aktarmaz. 302'yi yalnızca gerçekten geçici durumlarda kullanın: kısa süreli bir kampanya sayfası, bakım dönemi, bölgeye göre değişen bir yönlendirme ya da A/B testi gibi.
En sık yapılan ve en pahalıya patlayan hata, kalıcı bir taşımada yanlışlıkla 302 kullanmaktır. Çoğu WordPress eklentisi varsayılan olarak 301 kullanır, ancak elle kural yazarken bunu doğrulamak sizin sorumluluğunuzdadır. Aşağıdaki tablo iki kodu özetliyor:
| Özellik | 301 (Kalıcı) | 302 (Geçici) |
|---|---|---|
| Anlamı | Adres kalıcı taşındı | Adres geçici olarak değişti |
| SEO değeri aktarımı | Yüksek (neredeyse tam) | Yok / eski URL korunur |
| Tarayıcı önbelleği | Yönlendirmeyi önbelleğe alır | Genelde önbelleğe almaz |
| Ne zaman kullanılır | Permalink/taşıma/silme | Kampanya, bakım, test |
Buradaki kritik ayrıntı şu: 301 tarayıcı tarafından önbelleğe alınır. Yanlış bir 301 kurup sonra düzeltseniz bile, ziyaretçinin tarayıcısı eski yönlendirmeyi bir süre hatırlayabilir. Bu yüzden yeni kuralları önce gizli sekmede (incognito) ya da curl ile test etmek iyi bir alışkanlıktır.
WordPress'te Ne Zaman Yönlendirme Gerekir?#
Yönlendirme WordPress'te teorik bir konu değil, günlük yönetimin bir parçasıdır. En yaygın senaryolar şunlardır:
- Permalink (kalıcı bağlantı) değişikliği: Ayarlar → Kalıcı Bağlantılar'da yapıyı değiştirdiğinizde (örneğin
/?p=123'ten/gonderi-adi/'na geçtiğinizde) tüm eski URL'ler kırılır. Modern permalink yapısına geçen her sitenin toplu yönlendirmeye ihtiyacı vardır. - Yazı veya sayfa slug'ının değişmesi: Bir gönderinin başlığını düzelttiğinizde WordPress slug'ı otomatik güncellemez, ama siz elle güncellerseniz eski adres 404 verir. Örneğin
/wordpress-hizlandirma/→/wordpress-hiz-optimizasyonu/. - İçerik birleştirme: İki zayıf yazıyı tek güçlü bir yazıda topladığınızda, silinen yazının URL'sini yenisine yönlendirirsiniz. Böylece eski bağlantılar ve arama değeri korunur.
- Silinen içerik: Artık geçerli olmayan bir kampanya ya da ürün sayfasını sildiğinizde, ilgili bir kategoriye ya da ana sayfaya yönlendirmek
404yerine anlamlı bir deneyim sunar. - Alan adı veya HTTPS geçişi: Siteyi yeni bir alan adına taşıdığınızda ya da
http'denhttps'e geçtiğinizde her eski URL'yi yeni sürümüne yönlendirmeniz gerekir. Kapsamlı bir taşıma planı için site taşıma hizmetimiz ve WordPress manuel taşıma rehberi işinizi kolaylaştırır. - www / çıplak alan adı ve büyük-küçük harf tutarlılığı:
www'lu vewww'suz sürümü tek bir kanonik adreste birleştirmek de bir yönlendirme işidir.
Bu senaryoların ortak noktası şudur: bir URL değişiyor ama o URL'ye giden bağlantılar (Google dizini, dış siteler, sosyal medya paylaşımları, e-posta bültenleri) hâlâ eski adresi işaret ediyor. Yönlendirme, bu köprüyü koparmadan geçişi tamamlamanızı sağlar. SEO açısından neden bu kadar önemli olduğunu daha derinlemesine görmek için WordPress SEO başlangıç rehberini okumanızı öneririm.
Redirection Eklentisiyle Yönlendirme#
WordPress'te yönlendirme kurmanın en pratik ve kod gerektirmeyen yolu, ücretsiz Redirection eklentisidir. Milyonlarca sitede kullanılan bu eklenti, yönlendirmeleri veritabanında saklar (wp_redirection_items tablosu), her yönlendirmenin kaç kez tetiklendiğini sayar ve — en değerlisi — sitenizde oluşan tüm 404 hatalarını otomatik olarak kaydeder.
Kurulumu basittir: Eklentiler → Yeni Ekle bölümünden "Redirection" aratıp kurun ve etkinleştirin, ardından Araçlar → Redirection menüsünden kurulum sihirbazını tamamlayın. Sihirbaz, WordPress'in kendi 404 ve yönlendirme olaylarını izleyip izlemeyeceğini sorar; bu seçenekleri açık bırakın.
Tekli bir yönlendirme kurmak için "Add new redirection" bölümünde iki alan doldurursunuz:
Source URL: /eski-yazi-adresi/
Target URL: /yeni-yazi-adresi/
HTTP code: 301 - Moved Permanently
Kaydettiğinizde eklenti kuralı hemen devreye alır; .htaccess'e dokunmanıza gerek kalmaz çünkü yönlendirme WordPress'in template_redirect aşamasında PHP tarafından yapılır. Kaynak URL'yi her zaman göreli (/eski-adres/ biçiminde, alan adı olmadan) girmeniz yeterlidir.
404 log takibi bu eklentinin en güçlü yanıdır. Araçlar → Redirection → 404s sekmesinde, ziyaretçilerin ve botların ulaşamadığı tüm adresleri görürsünüz. Buradan bir kırık bağlantıyı seçip tek tıkla "Redirect to..." diyerek doğru hedefe yönlendirebilirsiniz. Bu, yeni bir yönlendirmeyi tahminle değil, gerçek trafik verisiyle kurmanızı sağlar. Log'u düzenli kontrol etmek, WordPress bakım rutininin doğal bir parçası olmalıdır.
Yönlendirmelerinizi düzenli tutmak için "Groups" (gruplar) özelliğini kullanabilirsiniz — örneğin taşıma yönlendirmelerini bir grupta, kampanya yönlendirmelerini başka bir grupta toplayabilirsiniz. Böylece bir kampanya bitince o grubu topluca devre dışı bırakırsınız.
Regex ve Toplu Yönlendirme#
Tekli kurallar birkaç URL için idealdir, ancak yüzlerce sayfayı taşıdığınızda tek tek kural girmek imkânsız hâle gelir. İşte burada regex (düzenli ifade) desenleri ve toplu içe aktarma devreye girer.
Redirection eklentisinde bir kuralı eklerken "Regex" kutusunu işaretlerseniz, kaynak alanına sabit bir URL yerine bir desen yazabilirsiniz. Örneğin tüm /blog/... yolunu /makaleler/... altına, alt sayfaları koruyarak taşımak isterseniz:
# Regex kutusu işaretli olmalı
Source URL: ^/blog/(.*)$
Target URL: /makaleler/$1
HTTP code: 301
Buradaki (.*) deseni, /blog/'dan sonra gelen her şeyi yakalar ve $1 ile hedefte aynen yeniden kullanır. Yani /blog/wordpress-guvenligi/ adresi otomatik olarak /makaleler/wordpress-guvenligi/'ne yönlenir. Tek bir regex kuralı, binlerce sayfayı tek satırla taşıyabilir.
Bir diğer yaygın regex ihtiyacı, tarih tabanlı permalink'ten sade yapıya geçiştir. Örneğin /2023/05/yazi-adi/ biçimini /yazi-adi/'na indirgemek için:
Source URL: ^/\d{4}/\d{2}/(.*)$
Target URL: /$1
HTTP code: 301
Burada \d{4} dört haneli yılı, \d{2} iki haneli ayı temsil eder; geri kalan slug $1 ile korunur.
Toplu içe aktarma (bulk import) ise elinizde hazır bir eşleme listesi olduğunda çok işe yarar. Redirection'ın Import/Export sekmesinden bir CSV dosyası yükleyebilirsiniz. Dosyanın biçimi basittir:
# redirects.csv
source,target,code
/eski-1/,/yeni-1/,301
/eski-2/,/yeni-2/,301
/kampanya-2023/,/kampanyalar/,301
Yüzlerce satırlık bir CSV'yi bir kerede yükleyip tüm yönlendirmeleri saniyeler içinde oluşturabilirsiniz. Bu listeyi çoğunlukla eski site haritanızdan (sitemap) ya da Search Console'daki dizin listesinden üretirsiniz. Yönlendirmeleri veritabanı düzeyinde incelemek isterseniz, aktif kuralları doğrudan sorgulayabilirsiniz:
SELECT url, action_data, action_code
FROM wp_redirection_items
WHERE status = 'enabled'
ORDER BY id DESC;
Bu sorgu, eklentinin sakladığı tüm etkin yönlendirmeleri (kaynak, hedef ve durum kodu ile) listeler; büyük bir taşıma sonrası kuralların gerçekten yazıldığını doğrulamak için kullanışlıdır.
.htaccess ile Manuel Yönlendirme#
Eklenti kullanmak istemiyorsanız ya da yönlendirmenin PHP hiç çalışmadan, mümkün olan en erken aşamada yapılmasını istiyorsanız, Apache sunucularda .htaccess dosyası en hızlı ve kesin yöntemdir. Bu yaklaşım, yönlendirmeyi WordPress'e hiç girmeden web sunucusu seviyesinde çözer; bu da hem daha hızlıdır hem de sunucu yükünü azaltır.
WordPress kök dizinindeki .htaccess dosyasını açın ve # BEGIN WordPress satırından önce kurallarınızı ekleyin (WordPress bloğunun içine yazmayın, güncellemede silinebilir). Tek bir sayfa için basit bir 301:
# Tek bir eski adresi yeni adrese kalıcı yönlendir
Redirect 301 /eski-yazi/ https://siteniz.com/yeni-yazi/
Desen tabanlı, alt sayfaları koruyan yönlendirmeler için mod_rewrite kullanılır:
# /blog/... yolunu /makaleler/... altına, alt sayfaları koruyarak taşı
RewriteEngine On
RewriteRule ^blog/(.*)$ /makaleler/$1 [R=301,L]
# www'suz sürümü www'ya birleştir (kanonik adres)
RewriteCond %{HTTP_HOST} ^siteniz\.com$ [NC]
RewriteRule ^(.*)$ https://www.siteniz.com/$1 [R=301,L]
Buradaki R=301 kalıcı yönlendirmeyi, L ise "bu son kural, dur" anlamına gelir. .htaccess tabanlı yönlendirmelerin daha ayrıntılı örneklerini ve söz diziminin inceliklerini htaccess yönlendirme rehberinde bulabilirsiniz.
Sunucunuz Nginx kullanıyorsa .htaccess çalışmaz; kuralı sunucu bloğunun içine yazarsınız. Nginx yapılandırmasını değiştirmek genellikle sunucuya erişim gerektirir:
# /blog/ yolunu /makaleler/ altına 301 ile taşı
location /blog/ {
rewrite ^/blog/(.*)$ /makaleler/$1 permanent;
}
# Tekil bir eski sayfayı yönlendir
location = /eski-yazi/ {
return 301 https://siteniz.com/yeni-yazi/;
}
Nginx'te permanent anahtar kelimesi 301'e, redirect ise 302'ye karşılık gelir. Sunucu yapılandırmasına doğrudan müdahale etmek istemeyen kullanıcılar için yönetilen sunucu hizmetimiz bu kuralları sizin adınıza güvenle uygular.
Eklenti mi, .htaccess mi seçmek zorunda kalırsanız, şu tablo karar vermenizi kolaylaştırır:
| Ölçüt | Redirection eklentisi | .htaccess / Nginx |
|---|---|---|
| Kurulum kolaylığı | Çok kolay (arayüz) | Orta (dosya düzenleme) |
| 404 log takibi | Var (otomatik) | Yok |
| Performans | PHP çalışır (biraz yavaş) | Sunucu seviyesi (en hızlı) |
| Toplu / regex | CSV içe aktarma + regex | Elle regex yazımı |
| Risk | Düşük | Yanlış kural siteyi kırabilir |
Çoğu WordPress kullanıcısı için Redirection eklentisi doğru başlangıçtır; performans kritik ya da yönlendirme sayısı çok yüksekse .htaccess/Nginx düzeyine geçmek mantıklıdır.
Yönlendirme Zinciri ve Döngüsünü Önleme#
İki sessiz ama ciddi tuzak vardır: yönlendirme zinciri ve yönlendirme döngüsü. Bunlar özellikle zamanla üst üste kural biriktiren eski sitelerde ortaya çıkar.
Yönlendirme zinciri (redirect chain), bir URL'nin başka bir URL'ye, onun da bir başkasına yönlenmesidir: A → B → C. Her sıçrama (hop) sayfa açılışını yavaşlatır ve SEO değerini biraz daha seyreltir. Klasik örnek şudur: yıllar içinde önce slug değişir (/eski/ → /orta/), sonra alan adı taşınır (/orta/ → yeni-alan-adı/orta/), en son HTTPS'e geçilir. Sonuçta ziyaretçi tek bir tıklamada üç-dört sunucu turu atar. Çözüm, zincirdeki ilk adımı doğrudan nihai hedefe güncellemektir: A → C olacak şekilde kuralı sadeleştirin.
Yönlendirme döngüsü (redirect loop) ise daha yıkıcıdır: A → B → A. Tarayıcı sonsuz bir döngüye girer ve ERR_TOO_MANY_REDIRECTS hatasıyla sayfayı hiç açamaz. En sık nedeni, birbiriyle çelişen iki kuraldır — örneğin bir yerde www'suzu www'ya, başka bir yerde www'yu www'suza yönlendirmek. HTTPS zorlama kuralı ile SSL sonlandırmanın (proxy arkasında) yanlış yapılandırılması da klasik bir döngü kaynağıdır.
Bu sorunları kurulumdan hemen sonra curl ile yakalayabilirsiniz. -I yalnızca başlıkları getirir, -L ise tüm zinciri baştan sona takip eder:
# Tek bir isteğin durum kodunu ve hedefini gör
curl -I https://siteniz.com/eski-yazi/
# Tüm yönlendirme zincirini adım adım izle
curl -sIL https://siteniz.com/eski-yazi/ | grep -Ei "HTTP/|location"
İkinci komutun çıktısında ard arda birden fazla 301 satırı görüyorsanız bir zinciriniz var; aynı iki adres arasında sonsuz tekrar görüyorsanız bir döngünüz var demektir. İdeal olan, tek bir 301 ve tek bir location satırı görmektir. Kuralları yalın ve tek yönlü tutmak, hem hız hem de SEO açısından en sağlıklısıdır.
SEO Değer Aktarımı ve Doğrulama#
301 yönlendirmenin en büyük vaadi, eski sayfanın arama değerini yeni adrese taşımasıdır. Ancak bu aktarımın sağlıklı olması birkaç kurala bağlıdır ve sonucu mutlaka doğrulamanız gerekir.
Öncelikle her eski URL'yi, içeriğe en yakın karşılığına yönlendirin. Silinen bir yazıyı gelişigüzel ana sayfaya toplamak yerine, konusuyla ilgili bir yazıya ya da kategoriye yönlendirin. Google, alakasız bir hedefe yapılan 301'i çoğunlukla "yumuşak 404" (soft 404) olarak yorumlar ve değeri aktarmaz. İçerik eşleşmesi ne kadar yakınsa, değer aktarımı o kadar tamdır.
İkincisi, kanonik (canonical) etiketlerinizin yönlendirmeyle çelişmediğinden emin olun. Yeni sayfanın rel="canonical" etiketi kendisini işaret etmeli, kazara eski URL'yi göstermemelidir. SEO eklentileriniz (Yoast, Rank Math gibi) bunu genelde doğru yapar, ama taşıma sonrası kontrol etmekte fayda var. Site genelinde arama görünürlüğünü artırmaya yönelik profesyonel destek için SEO hizmetimizi inceleyebilirsiniz.
Üçüncüsü, taşımayı Google Search Console'da doğrulayın. Yeni site haritanızı gönderin, "URL Denetimi" aracıyla birkaç eski adresin 301 döndürüp yeni adrese işaret ettiğini teyit edin ve "Kapsam" (Coverage) raporunda 404 sayısının zamanla düştüğünü izleyin. Alan adı taşıması yaptıysanız, Search Console'un "Adres Değişikliği" (Change of Address) aracını da kullanın; bu, Google'a geçişi resmen bildirir ve indeksleme sürecini hızlandırır.
Son olarak, canlıya geçmeden önce yönlendirmelerinizi bir hazırlık (staging) ortamında test edin. Bir hata varsa, gerçek trafiği ve sıralamalarınızı riske atmadan düzeltirsiniz. WordPress'inizi güvenli bir altyapıda barındırmak, tüm bu işlemlerin sağlıklı yürümesinin temelidir; WordPress hosting paketlerimiz staging, otomatik yedekleme ve hızlı sunucularla bu geçişleri kolaylaştırır.
Sıkça Sorulan Sorular#
301 mi 302 mi kullanmalıyım?#
Değişiklik kalıcıysa daima 301 kullanın. Permalink değiştirmek, yazı slug'ını güncellemek, içerik birleştirmek, alan adı taşımak ya da HTTPS'e geçmek gibi geri dönüşü olmayan durumlar 301 gerektirir; çünkü yalnızca 301 eski sayfanın SEO değerini yeni adrese aktarır. 302'yi ise yalnızca gerçekten geçici durumlarda — kısa süreli bir kampanya, bakım dönemi ya da A/B testi — tercih edin. Kalıcı bir taşımada yanlışlıkla 302 kullanmak, arama motorunun eski URL'yi dizinde tutmasına ve değerin aktarılmamasına yol açan en yaygın hatadır.
Redirection eklentisi sitemi yavaşlatır mı?#
Etkisi çoğu site için ihmal edilebilir düzeydedir. Redirection eklentisi yönlendirmeyi PHP tarafında yaptığı için .htaccess yöntemine göre teorik olarak biraz daha fazla iş yükü doğurur, ancak eklenti kuralları verimli sorgularla çalışır ve önbellek katmanlarıyla birlikte fark hissedilmez. Yalnızca binlerce yönlendirmeniz varsa ya da performans milisaniye düzeyinde kritikse, kuralları .htaccess veya Nginx seviyesine taşımayı değerlendirebilirsiniz. Küçük ve orta ölçekli siteler için eklenti hem yeterince hızlı hem de çok daha güvenlidir.
Yönlendirme SEO değerimi tamamen aktarır mı?#
İyi kurgulanmış bir 301, eski sayfanın değerinin büyük çoğunluğunu aktarır ve günümüzde değer kaybı çok düşüktür. Ancak birkaç koşula dikkat etmek gerekir. Her eski URL'yi içeriğine en yakın yeni sayfaya yönlendirin; alakasız bir hedefe yapılan yönlendirme "yumuşak 404" olarak yorumlanıp değeri aktarmayabilir. Ayrıca yönlendirme zincirlerini kısa tutun, 302 yerine 301 kullanın ve yeni sayfanın kanonik etiketinin kendisini işaret ettiğinden emin olun. Bu koşullar sağlandığında aktarım neredeyse tamdır.
Silinen bir sayfayı nereye yönlendirmeliyim?#
En doğru hedef, silinen içeriğe konu olarak en yakın sayfadır. Örneğin kaldırdığınız bir ürünü aynı kategorideki başka bir ürüne ya da kategori sayfasına, biten bir kampanyayı güncel kampanyalar listesine yönlendirin. Anlamlı bir karşılık yoksa ilgili bir üst kategoriye yönlendirebilirsiniz; her şeyi gelişigüzel ana sayfaya toplamak ise hem kullanıcı deneyimini bozar hem de arama motoru için değer aktarmayan bir işaret olur. Bazı durumlarda içerik gerçekten kalıcı olarak yok olmuşsa, 301 yerine 410 Gone kodu daha dürüst bir sinyaldir.
Yönlendirmemin çalıştığını nasıl test ederim?#
En kesin yöntem komut satırında curl -I https://siteniz.com/eski-adres/ çalıştırmaktır. Dönen ilk satırdaki durum kodu yönlendirme türünü (301 mi 302 mi), location satırı ise hedef adresi gösterir. Tüm zinciri görmek için curl -sIL kullanın; bu, art arda kaç sıçrama olduğunu ve bir döngü olup olmadığını ortaya koyar. Tarayıcıda ise gizli sekmede test edin (301 önbelleğe alındığı için normal sekme eski sonucu gösterebilir) ve geliştirici araçlarının Network sekmesinden durum kodlarını doğrulayın.
Toplu (bulk) yönlendirmeyi en pratik nasıl yaparım?#
Elinizde eski ve yeni URL eşlemelerinden oluşan bir liste varsa, en pratik yol Redirection eklentisinin Import/Export sekmesinden bir CSV dosyası yüklemektir. Dosyada her satır kaynak, hedef ve durum kodunu içerir; yüzlerce yönlendirmeyi tek seferde oluşturabilirsiniz. Yol bazlı bir desen söz konusuysa (örneğin /blog/ altındaki her şeyi /makaleler/'e taşımak), tek tek satır yazmak yerine bir regex kuralı çok daha verimlidir. Büyük bir taşımada bu iki yöntemi birleştirmek — desenler için regex, tekil istisnalar için CSV — en temiz sonucu verir.
Kapanış#
301 yönlendirme, WordPress'te URL değiştiren her işlemin ayrılmaz parçasıdır: doğru kurulduğunda ziyaretçilerinizi ve yıllarca biriktirdiğiniz arama değerini korur, yanlış ya da eksik kurulduğunda ise 404 hataları ve kayıp sıralamalarla sonuçlanır. Kalıcı değişikliklerde her zaman 301 kullanın, kolay yönetim için Redirection eklentisiyle başlayın, toplu geçişlerde regex ve CSV'den yararlanın, performans kritikse .htaccess/Nginx seviyesine çıkın ve her kurulumu curl -sIL ile zincir ve döngü açısından mutlaka doğrulayın.
Sağlam bir yönlendirme stratejisi, ancak hızlı ve kararlı bir altyapının üzerinde tam değerini gösterir. Staging ortamı, otomatik yedekleme ve optimize edilmiş sunucularla gelen WordPress hosting paketlerimizle geçişlerinizi güvenle yapabilir; kapsamlı bir alan adı taşıması planlıyorsanız site taşıma hizmetimizden, arama görünürlüğünüzü büyütmek içinse SEO çözümlerimizden faydalanabilirsiniz.