301 Yönlendirmesi Nasıl Yapılır? Adım Adım Rehber

301 yönlendirmesi, bir sayfanın adresi kalıcı olarak değiştiğinde ziyaretçileri ve arama motorlarını eski URL’den yeni URL’ye otomatik olarak gönderen sunucu yanıtıdır. Apache ve LiteSpeed sunucularda .htaccess dosyasına tek satır ekleyerek, WordPress’te bir eklentiyle, Nginx’te return 301 komutuyla ya da Cloudflare panelinden kurulabilir. Doğru kurulduğunda eski sayfanın sıralaması ve aldığı bağlantıların değeri yeni adrese aktarılır.
- Tek sayfa için (.htaccess):
Redirect 301 /eski-sayfa https://www.siteniz.com/yeni-sayfa - Kalıcı taşımada 301 (veya 308), geçici durumlarda 302 (veya 307) kullanılır.
- Her eski URL, içeriği en yakın yeni URL’ye yönlenmeli; toplu olarak ana sayfaya yönlendirmek hatadır.
- Yönlendirmeler en az 1 yıl, mümkünse süresiz kalmalıdır.
- Kurulumdan sonra
curl -Iveya Search Console URL Denetleme ile test edin.
301 Yönlendirmesi Nedir?
301, HTTP’nin “Moved Permanently” (kalıcı olarak taşındı) durum kodudur. Tarayıcı ya da Googlebot eski adrese geldiğinde sunucu sayfa yerine 301 kodunu ve yeni adresi (Location başlığı) döndürür. Tarayıcı kullanıcıyı fark ettirmeden yeni adrese götürür. Google ise zamanla eski URL’yi dizinden çıkarıp yerine yeni URL’yi gösterir.
Bir 301 yanıtı sunucuda şöyle görünür:
HTTP/1.1 301 Moved Permanently
Location: https://www.siteniz.com/yeni-sayfa

301 Yönlendirmesi Ne Zaman Yapılır, Ne Zaman Yapılmaz?
301 gereken durumlar:
- Sayfanın URL’si (slug) değişti.
- Site yeni bir alan adına taşındı.
- HTTP’den HTTPS’e geçildi ya da www’lü ve www’süz sürümler tek adreste birleştirildi.
- Aynı konuyu anlatan iki yazı birleştirildi (anahtar kelime yamyamlığı çözümü).
- Altyapı değişti (ör. hazır e-ticaret paketinden WordPress/WooCommerce’e geçildi) ve URL yapısı farklılaştı.
- Satıştan kalkan bir ürünün yerine geçen yeni model veya aynı kategori sayfası var.
301 gerekmeyen durumlar:
- Sayfanın sadece içeriği ya da görselleri değişti; adres aynı kaldı.
- İçerik geçici olarak kaldırıldı (kampanya bitti, bakım var). Bu durumda 302 veya 307 kullanılır.
- Sayfa tamamen silindi ve yerine geçecek benzer bir sayfa yok. Bu durumda 410 (Gone) ya da 404 döndürmek daha doğrudur.
- İki sayfa da yayında kalacak ama Google’ın birini tercih etmesi isteniyor. Bu durumda canonical etiketi kullanılır.

301, 302, 307, 308 ve Diğer Yönlendirmeler: Hangisini Seçmeli?
| Tür | Anlamı | Google nasıl yorumlar? | Ne zaman kullanılır? |
|---|---|---|---|
| 301 | Kalıcı taşındı | Kalıcı. Yeni URL dizine alınır. | URL değişikliği, site taşıma, HTTPS geçişi |
| 308 | Kalıcı taşındı (istek yöntemi korunur) | Kalıcı. 301 ile aynı. | Form/API gibi POST isteklerinin de taşınması gerektiğinde |
| 302 | Geçici olarak bulundu | Geçici. Eski URL dizinde kalır. | Kampanya, A/B testi, kısa süreli bakım |
| 307 | Geçici yönlendirme (yöntem korunur) | Geçici. 302 ile aynı. | Geçici durumlar; tarayıcılar HSTS için de 307 gösterir |
| Meta refresh (0 sn) | HTML içinden yönlendirme | Kalıcı kabul edilir. | Sunucuya erişim yoksa son çare |
| JavaScript | window.location ile yönlendirme |
Kalıcı kabul edilir ama JS işlenmezse görülmeyebilir. | Sunucu ve meta refresh mümkün değilse |
Google’ın önerisi açıktır: kalıcı değişikliklerde mümkün olan her durumda sunucu tarafında 301 veya 308 kullanın. Kaynak: Google Search Central, Yönlendirmeler ve Google Arama.
Affiliate bağlantılarını /git/urun-adi gibi kısa adreslerle yönetmek için genellikle 302 kullanılır. Bu yöntemin doğru ve yanlış kullanımlarını bağlantı maskeleme yazısında anlattım.
Başlamadan Önce: Yönlendirme Haritası Hazırlayın
Yönlendirme işlerinin çoğu kod yazarken değil, hazırlıksız yapılan taşımalarda bozulur. Kod yazmadan önce her eski URL’nin nereye gideceğini gösteren bir tablo hazırlayın:
| Eski URL | Yeni URL | Kod | Not |
|---|---|---|---|
| /urun/kirmizi-elbise-123 | /kirmizi-elbise | 301 | Birebir karşılık |
| /kategori/elbise | /elbiseler | 301 | Kategori adı değişti |
| /urun/eski-sezon-ceket | /montlar | 301 | Ürün kalktı, en yakın kategori |
| /kampanya-2024 | (yok) | 410 | Karşılığı yok |
Eski URL’leri toplamanın yolları:
- Site haritası: Taşımadan önce mevcut
sitemap.xmldosyasını indirin. - Search Console: Performans raporunda “Sayfalar” sekmesini dışa aktarın. Trafik alan URL’ler önceliklidir.
- Tarama aracı: Screaming Frog gibi bir araçla siteyi tarayın (ücretsiz sürüm 500 URL’ye kadar tarar).
- Backlink listesi: Dış sitelerden bağlantı alan URL’leri mutlaka haritaya ekleyin; yönlendirilmezse bağlantı değeri boşa gider. E-ticaret altyapısı değiştirirken taşıma planının nasıl kurulduğunu e-ticaret danışmanlığı sayfasında anlattım.
- Taşımayı çoktan yaptıysanız: Wayback Machine ile sitenin geçmişine bakabilir veya Google’da
site:eskisite.comaraması yapabilirsiniz.
.htaccess ile 301 Yönlendirmesi (Apache ve LiteSpeed)
.htaccess, sitenizin kök dizininde (genellikle public_html) bulunan bir sunucu ayar dosyasıdır. cPanel’de Dosya Yöneticisi‘ni açın, sağ üstteki Ayarlar‘dan “Gizli dosyaları göster” seçeneğini işaretleyin. Dosya yoksa .htaccess adıyla yeni bir dosya oluşturabilirsiniz.
Tek sayfayı yönlendirmek
Redirect 301 /eski-sayfa https://www.siteniz.com/yeni-sayfa
Soldaki yol alan adı olmadan, sağdaki hedef tam adresle yazılır. Redirect komutu alt yolları da taşır: /eski-sayfa/alt adresi /yeni-sayfa/alt adresine gider.
Klasörü veya kategoriyi yönlendirmek
RewriteEngine On
RewriteRule ^blog/(.*)$ https://www.siteniz.com/makaleler/$1 [R=301,L]
/blog/ altındaki tüm sayfalar aynı adla /makaleler/ altına taşınır.
URL’den bir ön eki kaldırmak (e-ticaret örneği)
Eski sitede /kategori/alt-kategori/urun-adi olan ürün adresleri, yeni sitede /urun-adi olarak açılıyorsa:
RewriteEngine On
RewriteRule ^kategori/alt-kategori/(.*)$ https://www.siteniz.com/$1 [R=301,L]
HTTP’den HTTPS’e ve www’ye tek adımda yönlendirmek
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.siteniz.com/$1 [R=301,L]
Bu kural tüm varyasyonları (http, www’süz) tek bir yönlendirmeyle son adrese gönderir ve zincir oluşmasını engeller.
Alan adı değişikliğinde tüm siteyi taşımak
Eski alan adının .htaccess dosyasına eklenir. Her sayfa yeni alan adındaki aynı yola gider:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?eskisite\.com$ [NC]
RewriteRule ^(.*)$ https://www.yenisite.com/$1 [R=301,L]
Bazı URL’ler yeni sitede farklı olacaksa, onlara özel kuralları bu genel kuralın üstüne yazın. Apache kuralları yukarıdan aşağıya okur ve L bayrağı eşleşen ilk kuralda durmasını sağlar.
WordPress kullanıyorsanız kodun yeri önemli
WordPress .htaccess dosyasına kendi kurallarını # BEGIN WordPress ile # END WordPress arasına yazar ve bu bölümü zaman zaman yeniden oluşturur. Kendi yönlendirmelerinizi her zaman bu bloğun üstüne ekleyin:
# Yönlendirmeler
Redirect 301 /eski-sayfa https://www.siteniz.com/yeni-sayfa
# BEGIN WordPress
...
# END WordPress

WordPress’te Eklentiyle 301 Yönlendirmesi
Sunucu dosyasıyla uğraşmak istemiyorsanız eklenti en güvenli yoldur.
Redirection eklentisi (ücretsiz)
- Eklentiler > Yeni Ekle menüsünde “Redirection” aratın. John Godley’nin geliştirdiği eklentiyi kurup etkinleştirin.
- Araçlar > Redirection menüsüne gidin ve kurulum sihirbazını varsayılan ayarlarla tamamlayın.
- Kaynak URL alanına eski adresi alan adı olmadan yazın (ör.
/eski-sayfa). - Hedef URL alanına yeni adresi yazın ve Yönlendirme Ekle‘ye tıklayın.
Eklentinin 404’ler sekmesi, sitede hata veren adresleri kaydeder. Taşımadan sonraki haftalarda bu listeyi kontrol ederek gözden kaçan URL’leri yakalayabilirsiniz. CSV ile toplu içe aktarma da destekler.
SEO eklentilerinin yönlendirme modülleri
- Rank Math: Ücretsiz sürümde Yönlendirmeler modülü vardır. Panelden açıp aynı şekilde kaynak ve hedef girebilirsiniz.
- Yoast SEO Premium: Bir yazının adresini değiştirdiğinizde ya da yazıyı sildiğinizde yönlendirme oluşturmayı otomatik olarak önerir. Ücretsiz Yoast sürümünde bu özellik yoktur.
Aynı adres için birden fazla eklentide yönlendirme tanımlamayın; çakışan kurallar döngüye neden olur.
Nginx’te 301 Yönlendirmesi
Nginx .htaccess dosyasını okumaz. Kurallar sunucu yapılandırmasına (genellikle /etc/nginx/sites-available/) yazılır.
Tek sayfa
location = /eski-sayfa {
return 301 https://www.siteniz.com/yeni-sayfa;
}
Alan adı değişikliği
server {
listen 80;
listen 443 ssl;
server_name eskisite.com www.eskisite.com;
# ssl_certificate ve ssl_certificate_key satırları eski alan adının sertifikasını göstermeli
return 301 https://www.yenisite.com$request_uri;
}
$request_uri, yolu ve sorgu parametrelerini olduğu gibi taşır. Değişiklikten sonra yapılandırmayı test edip yeniden yükleyin:
sudo nginx -t && sudo systemctl reload nginx
cPanel ve Cloudflare ile 301 Yönlendirmesi
cPanel
Alan Adları > Yönlendirmeler (Redirects) menüsünde türü Kalıcı (301) seçin, alan adını ve eski yolu girin, hedef adresi yazıp Ekle‘ye tıklayın. cPanel bu kuralı arka planda .htaccess dosyasına yazar.
Cloudflare
Sitenizin DNS’i Cloudflare’deyse sunucuya dokunmadan yönlendirme yapabilirsiniz:
- Rules > Redirect Rules: Tek tek ya da desen tabanlı yönlendirmeler (ör. eski alan adının tamamı) için. Durum kodu olarak 301’i seçin ve “Preserve query string” seçeneğini açık bırakın.
- Bulk Redirects: Yüzlerce birebir eşleşmeyi CSV listesiyle yüklemek için.
Eski alan adı başka bir sunucuda barınmıyorsa, yönlendirmenin çalışması için Cloudflare’de bu alan adına proxy’li (turuncu bulut) bir DNS kaydı bulunmalıdır.
Hazır E-Ticaret Altyapılarında 301
IdeaSoft, Ticimax, ikas, T-Soft ve Shopify gibi altyapılarda sunucu dosyasına erişiminiz olmaz. Bu altyapıların yönetim panellerinde “URL yönlendirme” veya “301 yönlendirme” adıyla bir bölüm bulunur ve çoğu Excel/CSV ile toplu yükleme kabul eder. Taşıma öncesinde hazırladığınız yönlendirme haritasını bu formata çevirip yüklemeniz yeterlidir. Shopify’da bu bölüm Online Mağaza > Navigasyon > URL Yönlendirmeleri altındadır ve ürün adresi değiştiğinde yönlendirme otomatik önerilir.
İki ayrı siteyi tek sitede birleştirirken 301 ve 410 kodlarını birlikte nasıl kullandığımı gerçek bir projeden anlattığım ALB Yatırım SEO başarı hikayesi yazısında bulabilirsiniz.
Alan Adı Değiştirdiyseniz: Google’a Bildirin
Yalnızca alan adı (veya alt alan adı) değiştiğinde Search Console’daki Adres Değişikliği aracını kullanın. HTTP’den HTTPS’e geçiş veya site içi URL değişikliklerinde bu araca gerek yoktur.
- Eski ve yeni alan adının Search Console mülklerinde aynı Google hesabıyla sahip yetkisine sahip olun.
- Eski mülkte Ayarlar > Adres değişikliği menüsünü açın.
- Yeni mülkü seçin ve doğrulamayı başlatın. Araç, ana sayfa ve örnek sayfalardaki 301’leri kontrol eder.
- Yeni alan adının site haritasını gönderin. Eski site haritasını bir süre tutmak, eski URL’lerin daha hızlı yeniden taranmasına yardım eder.
Ayrıntılar için: Google, URL değişikliği olan site taşımaları.
301 Yönlendirmesi Nasıl Test Edilir?
Komut satırıyla (en güvenilir yol)
Windows’ta Komut İstemi’ni, macOS ve Linux’ta Terminal’i açıp yazın:
curl -sIL https://www.siteniz.com/eski-sayfa
Çıktıda ilk satır HTTP/1.1 301 (ya da HTTP/2 301), location: satırı yeni adres, son yanıt ise 200 olmalıdır. Arada birden fazla 301 görüyorsanız zincir var demektir.

Tarayıcıyla
Chrome’da F12 ile Geliştirici Araçları’nı açın, Ağ (Network) sekmesinde “Preserve log” kutusunu işaretleyin ve eski adresi açın. İlk satırda 301 durum kodunu ve hedefi görürsünüz. Tarayıcı 301’leri önbelleğe aldığı için testleri gizli pencerede yapın.
Search Console ile
URL Denetleme aracına eski adresi yazın. “Sayfa yönlendirmeli” ifadesi ve hedef URL görünüyorsa Google yönlendirmeyi algılamıştır. Taşımadan sonraki haftalarda Sayfalar raporundaki “Yönlendirmeli sayfa” ve “Bulunamadı (404)” sayılarını izleyin.
En Sık Yapılan 301 Hataları
- Yönlendirme zinciri: A’dan B’ye, B’den C’ye. Her yönlendirmeyi doğrudan son adrese yazın. Google bir noktadan sonra zinciri takip etmeyi bırakır.
- Yönlendirme döngüsü: A, B’ye; B de A’ya gidiyor. Tarayıcı “çok fazla yönlendirme” hatası verir. Eklenti, .htaccess ve Cloudflare’deki kuralları birlikte kontrol edin.
- Her şeyi ana sayfaya yönlendirmek: Google bunu “soft 404” sayar ve eski sayfanın değeri aktarılmaz. Her URL’yi en yakın içeriğe gönderin.
- Kalıcı taşımada 302 kullanmak: Google eski URL’yi dizinde tutmaya devam eder.
- Hedef sayfayı robots.txt veya noindex ile engellemek: Değer aktarılacak yer kapalı olur.
- İç bağlantıları güncellememek: Menü, yazı içi linkler ve site haritası hala eski adresleri gösterirse her tıklama gereksiz bir yönlendirmeden geçer. Bağlantıları yeni adreslerle güncelleyin.
- Yönlendirmeleri erken kaldırmak: Birkaç ay sonra silinen kurallar, eski bağlantılardan gelen trafiği 404’e düşürür.
301 Yönlendirmesi Ne Kadar Süre Kalmalı? Nasıl İptal Edilir?
Google, yönlendirmelerin mümkün olduğunca uzun, genellikle en az 1 yıl tutulmasını önerir. Eski adrese başka sitelerden bağlantı geliyorsa yönlendirmeyi hiç kaldırmamak en doğrusudur. Ayrıntılı rehber: 301 yönlendirmesi ne zaman kaldırılmalıdır?
Yanlış bir yönlendirme yaptıysanız, kuralı eklediğiniz yerden (.htaccess, eklenti, Cloudflare) silmeniz yeterlidir. Ancak:
- Tarayıcılar 301’i önbelleğe aldığı için daha önce adresi ziyaret eden kullanıcılar bir süre daha yönlendirilebilir.
- Google yeni adresi çoktan dizine aldıysa, eski adrese dönmek için bu kez ters yönde 301 kurmanız gerekir.



