WordPress’te bir süre “gün/ay/yıl” içeren permalink yapısını (ör. /2026/05/04/yazi-basligi/) kullandıysan ve sonra bunu “temiz slug” yapısına (ör. /yazi-basligi/) çevirdiysen, eski linklere giren kullanıcılar ve arama motorları 404 görebilir.
Bu durumda en doğru çözüm, eski yapıyı yeni yapıya 301 (kalıcı) yönlendirme ile taşımaktır. Böylece:
- Eski linkler çalışmaya devam eder
- SEO değeri büyük ölçüde korunur
- Kullanıcılar doğru sayfaya gider
Hedef
Aşağıdaki dönüşümü yapmak istiyoruz:
- /2026/05/04/abap-open-sql/ → /abap-open-sql/
- /2024/12/01/selection-screen-temelleri → /selection-screen-temelleri/
.htaccess ile 301 Redirect kuralı
Apache kullanıyorsan (çoğu klasik hosting’de böyledir) site kökündeki .htaccess dosyasına şu kuralları ekleyebilirsin:
# 301 Redirect: eski tarihli WordPress URL yapısını temiz slug'a çevir
RewriteEngine On
RewriteRule ^\d{4}/\d{2}/\d{2}/(.+)/?$ /$1/ [R=301,L]
Kural ne yapıyor? (Kısa açıklama)
^\d{4}/\d{2}/\d{2}/→ URL’in başında sırasıyla 4 haneli yıl, 2 haneli ay, 2 haneli gün varsa eşleşir.(.+)→ Tarihten sonraki kısmı yakalar (genellikle yazının slug’ı)./$1/→ Yakalanan slug’ı site köküne taşır.[R=301,L]→ 301 yönlendirme yapar ve bu kuralda durur (L= last).
Özetle: “Tarihli URL’i al, tarihi kaldır, slug’ı aynı bırak.”
Nereye eklemeliyim?
Genelde .htaccess dosyasında WordPress’in otomatik kuralları şuna benzer görünür:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Öneri: Yönlendirme kuralını genellikle # BEGIN WordPress bloğunun üstüne eklemek daha sağlıklıdır. Çünkü WordPress’in kendi rewrite kuralları önce çalışırsa, yönlendirme beklediğin gibi çalışmayabilir.
Dikkat edilmesi gerekenler
1) “Aynı slug” varsayımı
Bu kural, tarih kısmı dışında slug’ların aynı kaldığını varsayar. Eğer eski slug ile yeni slug farklıysa, bu genel kural yetmez; tekil 301’ler gerekir.
2) Kategori yapısı varsa
Eski URL yapın şu şekildeyse:
/2026/05/04/kategori/yazi-basligi/
Bu kural tarih kısmını kaldırır ama “kategori/yazi-basligi” kısmını olduğu gibi taşır. Yeni yapın sadece /yazi-basligi/ ise, kuralı daha özel yazman gerekebilir.
3) Test etmeden canlıya alma
Yanlış rewrite kuralları yönlendirme döngüsü (redirect loop) veya siteyi erişilmez hale getirebilir. Düzenleme öncesi .htaccess yedeği al.
Redirect’in çalıştığını nasıl test ederim?
En basit yöntemlerden biri: tarayıcıda eski URL’e gitmek ve yeni URL’e gönderip göndermediğine bakmak.
Biraz daha teknik test için (terminal):
curl -I https://siteadresin.com/2026/05/04/ornek-yazi/
Beklenen çıktı:
HTTP/1.1 301 Moved PermanentlyLocation: https://siteadresin.com/ornek-yazi/
Sonuç
WordPress’te permalink yapısını tarihliden “temiz slug” yapısına çevirdiğinde, eski linkleri kaybetmemek için 301 yönlendirme şarttır. Yukarıdaki .htaccess kuralı, “yıl/ay/gün” içeren URL’leri otomatik olarak yeni slug formatına taşır ve SEO tarafında geçişi daha sorunsuz hale getirir.
İstersen bir sonraki adım olarak, senin eski URL yapına göre (kategori var mı, yazı slug’ları değişti mi vs.) kuralı daha “tam isabet” hale getirecek şekilde özelleştirebilirim. Eski permalink örneğinden 2-3 URL atman yeterli.
WordPress’te debug mode nasıl aktif edilir diye merak ediyorsan bu yazıyı inceleyebilirsin.
Link: https://www.mustafahamit.com/wordpresste-debug-mode-nasil-aktif-edilir/
![]()