Aracı kullanın

Dosyanız sunucuya yüklenmiyor — tüm işlem tarayıcınızda çalışır, URL listeniz cihazınızdan çıkmaz.

Nasıl çalıştığını okuyun
20 eski ve 20 yeni URL. Dördü yeni listede aynı adreste olduğu için yönlendirme gerektirmiyor.

1. Şablonu indirin ve doldurun

İki kolon var: eski_url (404 veren URL’ler) ve yeni_url (yeni sitedeki URL’ler).

Bu iki kolon bağımsız listelerdir — aynı satırdaki iki değer birbiriyle eşleştirilmez. Kolonların uzunluğu farklı olabilir.

2. Dosyayı yükleyin

CSV dosyanızı buraya sürükleyin

veya

Yalnızca CSV yükleyebilirsiniz. Ayırıcı otomatik algılanır: virgül, noktalı virgül veya sekme.
Ayarlar
Bu skorun altındaki hiçbir aday otomatik seçilmez.
Çıktıdaki hedeflerin başına bu alan adı eklenir.
Skor ağırlıkları

Toplam: 100% · Dört ağırlığın toplamı 1 olmalı. Varsayılanlar çoğu liste için doğrudur; değiştirmeniz gerekmez.

Yönlendirme aracı hakkında sorular

Kaç satır işleyebilir?

Liste başına 2.000 satır. Bu sınır aşıldığında araç işi başlatmaz ve kaç satır olduğunu söyler; sessizce ilk 2.000 satırı almaz, çünkü fark etmediğiniz bir kırpma eksik yönlendirme haritasıyla site taşımanıza yol açar. Daha büyük listeleri bölerek çalıştırın: eşleştirme her eski URL’yi her yeni URL ile karşılaştırdığı için bölmek sonucu bozmaz, yeter ki yeni URL listesinin tamamını her parçada verin.

Dosyam sunucuya yükleniyor mu?

Hayır. Tüm işlem tarayıcınızda çalışır; URL listeniz cihazınızdan çıkmaz. Eşleştirme sırasında ağ sekmesinde hiçbir istek göremezsiniz.

Excel dosyası yükleyebilir miyim?

Doğrudan .xlsx yüklemesi yok. Excel’de "Farklı Kaydet → CSV" seçin; araç ayırıcıyı otomatik algılar, Türkçe Excel’in yazdığı noktalı virgül dahil. Alternatif olarak iki kolonu Yapıştır sekmesindeki kutulara kopyalayabilirsiniz.

Şablondaki iki kolon birbirine karşılık geliyor mu?

Hayır, bu en sık yapılan hata. İki kolon bağımsız listelerdir: eski_url yönlendirilecek URL’leri, yeni_url hedef havuzunu tutar. Aynı satırdaki iki değer birbiriyle eşleştirilmez. Kolonların uzunluğu farklı olabilir — 40 eski ve 900 yeni URL tamamen normaldir.

Skoru kaçtan itibaren güvenebilirim?

90 ve üstü yüksek güven: toplu onaylayabilirsiniz. 70–89 arası gözden geçirilmeli ve varsayılan görünüm sizi doğrudan buraya bırakır. 50–69 arası zayıf sayılır ve otomatik seçilmez. 50 altı eşleşmedi kabul edilir; varsa üst kategori önerisi gösterilir ama seçilmez.

Eşleşmeyen URL’leri ana sayfaya yönlendirmeli miyim?

Hayır. Google alakasız bir hedefe yapılan yönlendirmeyi soft 404 sayar ve eski sayfanın değerini aktarmaz. Ya gerçekten ilgili bir üst kategoriye yönlendirin ya da 404/410 bırakın. 404 dürüst bir sinyaldir; yanlış bir 301 değildir.

Türkçe karakterli URL’ler doğru eşleşiyor mu?

Evet. Türkçe harfler karşılaştırma öncesinde açık bir eşleme tablosuyla sadeleştirilir, sonra küçük harfe çevrilir — bu sıra önemli, çünkü standart küçültme büyük İ harfini gözle görünmeyen bir artığa dönüştürür ve eşleşmeyi sessizce bozar. Yüzde kodlaması da kelimelere ayırmadan önce çözülür, yani /%C3%BCr%C3%BCn ile /ürün aynı sonucu verir. Ekranda ve çıktıda her zaman sizin orijinal URL’niz görünür.

Sorgu parametreleri ne oluyor?

Varsayılan olarak karşılaştırmada yok sayılırlar; ayarlardan dahil edebilirsiniz. Yalnızca parametreyle ayrışan iki eski URL birleştirilmez, ayrı satır olarak kalır ve "yalnızca parametreyle ayrışıyor" uyarısı alır — çünkü yol bazlı bir sunucu kuralı ikisini ayırt edemez ve bunu bilmeniz gerekir.

Alan adı değiştiriyorum, çıktı ne olacak?

Araç iki listede farklı alan adları görürse bunu size bildirir ve çıktı biçimini otomatik olarak tam URL’ye çevirir; hedefler göreli yol olarak yazılsa eski alan adına işaret ederdi. Hedef alan adını ayarlardan değiştirebilirsiniz.

Zincir ve döngü uyarıları ne anlama geliyor?

Zincir, hedef URL’nin eski listenizde de bulunması demektir: bu yönlendirme başka bir yönlendirmeye çıkar. Döngü, A → B ve B → A durumudur ve sonsuz yönlendirme üretir. İkisi de yayına almadan önce düzeltilmelidir; zincir her adımda değer sızdırır, döngü sayfayı tamamen erişilemez yapar.

301 yönlendirme eşleştirmesi nasıl çalışır?

Benzerlik skoru nasıl hesaplanıyor?

Skor 0–100 arası tek bir sayıdır ve dört bileşenin ağırlıklı toplamıdır. Çoğu araç skoru nasıl hesapladığını açıklamaz. Burada tamamı yazılı: hangi satıra güveneceğinize karar verebilmeniz için sayıyı değil, gerekçeyi görmeniz gerekir.

Skorun dört bileşeni, ağırlıkları ve ne ölçtükleri
BileşenAğırlıkNe ölçüyor
Ağırlıklı kelime örtüşmesi%50İki URL’nin kaç anlamlı kelimeyi paylaştığı. Kelimeler eşit ağırlıkta değil.
Harf düzeyi benzerlik%25Yazım farkları, ek farkları, kelime sırası değişimleri. Üçlü harf kümeleri üzerinden.
Yol yapısı%15Kategori ağacındaki yakınlık: iki URL aynı dizinlerin altında mı duruyor?
Derinlik ve uzunluk%10Aynı seviyedeki sayfalar birbirine daha yakındır.

Kelime ağırlıkları yeni URL listenizden hesaplanır. Bir kelime listede ne kadar çok geçiyorsa o kadar az bilgi taşır: 300 URL’de geçen "elbise" kelimesinin eşleşmesi, 12 URL’de geçen "kirmizi" kelimesinin eşleşmesinden çok daha az değerlidir. Buna ek olarak Türkçe e-ticaret URL’lerinde anlam taşımayan kalıp kelimeler — modelleri, cesitleri, fiyatlari, indirimli, satin-al, urun, sayfa, kategori — düşük ağırlıklı sayılır.

Bu kelimeler tamamen silinmez, yalnızca ağırlığı düşürülür. Silinseydi /elbise-fiyatlari ile /elbise-modelleri birebir aynı görünürdü ve araç size sahte bir %100 eşleşme gösterirdi.

Örtüşme her iki tarafın eşleşmeyen kelimeleri de cezalandırılarak hesaplanır. Bu, doğru sonuç için zorunlu: /elbise adresi /kirmizi-elbise-modelleri içinde tamamen geçer, dolayısıyla yalnızca "adayın kelimeleri kaynakta var mı?" diye bakan bir hesap ona %100 verir ve kısa, genel URL’ler her zaman kazanır. Bu araç adayda olmayan kelimeyi de hesaba katar; hiçbir yerde "metin içinde geçiyor mu" kontrolü kullanmaz.

Bunun üzerine bir de özgüllük kuralı gelir. Gürültü kelimeleri çıkarıldıktan sonra kalan anlamlı kelime kümeleri karşılaştırılır. Aday kaynağın alt kümesiyse, yani daha genel bir sayfaysa, skoru en fazla 65 olur ve "daha genel sayfa" etiketi alır. Kaynak adayın alt kümesiyse tavan 60’tır. Tavan adayı listeden çıkarmaz; yalnızca otomatik onaylanmasını ve eşit özgüllükteki bir adayı geçmesini engeller.

Somut bir örnek: kaynak URL /kirmizi-elbise-modelleri; anlamlı kelimeleri kirmizi ve elbise ("modelleri" gürültü).

/kirmizi-elbise-modelleri için iki adayın adım adım değerlendirmesi
AdayDeğerlendirmeSkor
/kirmizi-elbiseAnlamlı kelime kümesi kaynakla aynı → tavan yok; son segmentin anlamlı kelimeleri de aynı olduğu için 90 tabanı devreye girer90
/elbiseKaynağın alt kümesi → tavan 65; ayrıca "elbise" yaygın bir kelime, ağırlığı düşük56

Bu hesabın üzerine üç kısayol eklenir. Standartlaştırılmış yollar birebir aynıysa skor 100’dür. İki URL ortak bir ürün numarası veya SKU taşıyorsa skor en az 95 olur ve bu taban özgüllük tavanını ezer — ID, aynı ürünün kanıtıdır. Son segmentin anlamlı kelimeleri aynı ama dizin farklıysa skor en az 90 olur; bu taban tavanı ezmez, çünkü /kadin/elbise ile /elbise arasında son segment aynı olsa bile aday hâlâ daha genel sayfadır. Son taban bir koşula bağlı: slug ayırt edici olmalı, yani en az iki anlamlı kelime taşımalı ya da taşıdığı tek kelime listede nadir olmalı. Aksi hâlde /kadin/elbise ile /erkek/elbise son segmentlerini paylaştığı için kadın sayfasından erkek sayfasına yapılan bir yönlendirme 90 alırdı.

Gürültü temizliğinin kapsama testinden önce yapılması bu sonucun ön koşuludur. Yapılmasaydı /kirmizi-elbise de kaynağın alt kümesi sayılır ("modelleri" kelimesi onda yok) ve doğru cevap da 65’e kırpılırdı.

Kapsama testinin bir ince noktası var. İki URL aynı derinlikteyse test yalnızca son segment üzerinden yapılır, tüm yol üzerinden değil. Sebebi en yaygın taşıma deseni: /kadin/kirmizi-elbise-modelleri adresinin /kadin-giyim/kirmizi-elbise olması. Tüm yolun kelimelerine bakılırsa fazladan gelen "giyim" kelimesi kaynağı adayın alt kümesi yapar ve apaçık doğru olan cevap 60’a kırpılır. Dizinler yapıdır; sayfayı tanımlayan son segmenttir ve özgüllük değişikliği de orada görünür.

Karşılaştırma her zaman standartlaştırılmış hâl üzerinden yapılır: alan adı ve protokol düşer, sondaki eğik çizgi atılır, yüzde kodlaması çözülür, .html/.php gibi uzantılar yok sayılır, çapa ve sorgu parametreleri düşer, Türkçe karakterler karşılaştırma için sadeleştirilir. Çıktıya her zaman sizin verdiğiniz orijinal URL yazılır — sunucu kuralı gerçek adresi eşlemek zorundadır, sadeleştirilmiş hâli değil.

Site taşımasında yönlendirme kontrol listesi

  1. Taşımadan önce eski siteyi tam tarayın ve 200 dönen tüm URL’leri dışa aktarın. Taşıma sonrası bu listeyi üretmek çok daha zordur.
  2. Search Console’dan son 16 aylık tıklama alan URL’leri ve analitikten organik giriş sayfalarını da ekleyin. Tarayıcının bulamadığı ama trafik alan sayfalar hep olur.
  3. Backlink aracınızdan dış bağlantı alan URL’leri çıkarın. Bunlar yönlendirmesi en kritik olanlardır; kaybedilen her biri doğrudan link değeri kaybıdır.
  4. Yeni sitenin canlı URL listesini alın. Eşleştirmeyi staging üzerinden yapıyorsanız, yayına aldığınızda adreslerin değişmeyeceğinden emin olun.
  5. Bu araçla eşleştirin, 90 üstünü toplu onaylayın, 50–89 arasını tek tek gözden geçirin. Zamanınızı burada harcayın; işin tamamı bu 40 satırdır.
  6. Zincir ve döngü uyarılarını temizleyin. Yönlendirme zinciri her adımda değer sızdırır ve Google zincirin bir noktasında takip etmeyi bırakır.
  7. Aynı hedefe 20’den fazla eski URL yönleniyorsa o hedefi yeniden düşünün. Bu genelde eşleştirmenin değil, yeni sitede karşılığı olmayan bir bölümün işaretidir.
  8. Kuralları 301 olarak kurun, 302 değil. Kalıcı taşımada 302 sinyali Google’ın eski URL’yi kanonik tutmasına yol açar.
  9. Yayına aldıktan sonra eski URL listesini tekrar tarayın: hepsi tek adımda 301 ile 200 dönen bir sayfaya çıkmalı.
  10. Yeni sitemap’i Search Console’a gönderin, eski sitemap’i en az birkaç ay yayında tutun. Google eski URL’leri yeniden taramadan yönlendirmeleri göremez.
  11. Yönlendirmeleri en az bir yıl kaldırmayın. Google eski URL’leri aylarca tarar ve dış bağlantılar hiç güncellenmez.

Sunucu tarafında kurulum

Apache çıktısı Redirect değil RedirectMatch kullanır ve deseni iki uçtan sabitler. Bunun sebebi Redirect direktifinin ön ek eşlemesidir: /elbise için yazdığınız bir kural /elbise-mavi ve altındaki her yolu da yakalar. Kuralları .htaccess dosyanızın başına, diğer yönlendirmelerden önce koyun.

RedirectMatch 301 "^/kadin/kirmizi-elbise-modelleri/?$" "/kadin-giyim/kirmizi-elbise"

Yükledikten sonra sözdizimini doğrulayın: apachectl configtest. Hata verirse dosyayı geri alın; kırık bir .htaccess tüm siteyi 500 döndürür.

Nginx çıktısı bir map bloğudur, çünkü iki bin kuralı ifade etmenin yolu budur. Map bloğu http bağlamına, koşul da server bloğuna girer. Anahtar $request_uri değil $uri’dir: $uri sorgu parametresi olmayan, çözülmüş yoldur — kuralların eşlediği şey de tam olarak bu.

map $uri $redirect_target {
    default "";
    "/kadin/kirmizi-elbise-modelleri" "/kadin-giyim/kirmizi-elbise";
}

server {
    if ($redirect_target != "") {
        return 301 $redirect_target;
    }
}

nginx -t ile doğrulayın, sonra nginx -s reload ile yeniden yükleyin. Yeniden başlatmak gerekmez.

WordPress kullanıyorsanız Redirection eklentisi biçimini seçin ve Tools → Import ekranından yükleyin. Bin satırın üzerinde yönlendirmede eklenti yerine sunucu kuralını tercih edin: her istekte PHP çalıştırmak gereksiz yük.

Cloudflare veya benzeri bir CDN arkasındaysanız yönlendirmeleri kurduktan sonra önbelleği temizleyin. Eski 404 yanıtları önbellekte kalmışsa yeni kuralınız görünmez.

Sık yapılan hatalar

  • Eşleşmeyenleri toplu hâlde ana sayfaya yönlendirmek. Google alakasız bir hedefe yapılan yönlendirmeyi soft 404 sayar ve eski sayfanın değerini aktarmaz. Yanlış yönlendirme, yönlendirme yapmamaktan daha zararlıdır: 404 dürüst bir sinyaldir, yanlış 301 değildir.
  • Zinciri görmezden gelmek. A → B → C zincirinde her adım değer sızdırır ve Google beşinci adımdan sonra takip etmeyi bırakır. Her zaman doğrudan son hedefe yönlendirin.
  • Apache’de RedirectMatch yerine Redirect kullanmak. Ön ek eşlemesi yüzünden /urun kuralı /urun-detay, /urun/123 ve daha yüzlerce adresi de yakalar; bunu fark etmek için haftalar geçer.
  • 301 yerine 302 kullanmak. Geçici yönlendirme sinyali Google’ın eski URL’yi indekste tutmasına ve link değerinin aktarılmamasına yol açar.
  • Sorgu parametrelerini hesaba katmamak. /urunler?kategori=elbise ile /urunler?kategori=canta yalnızca parametreyle ayrışır; yol bazlı bir kural ikisini ayırt edemez. Bu araç böyle satırları ayrı tutar ve uyarır.
  • www ve protokol karışımı bırakmak. Yönlendirme hedefleri tek bir kanonik biçime çıkmalı, yoksa her istek iki atlama yapar.
  • Türkçe karakterli URL’leri kodlanmış hâlleriyle test etmemek. Tarayıcı /ürün gösterir, sunucuya /%C3%BCr%C3%BCn gider. Kuralınızı gerçek istekle doğrulayın.
  • Yönlendirmeleri kurup doğrulamamak. Kural yazmak işin yarısı; eski URL listesini yeniden tarayıp hepsinin tek adımda 200’e çıktığını görmek diğer yarısı.

Verileriniz nereye gidiyor?

Hiçbir yere. Dosya okuma, standartlaştırma, eşleştirme ve dosya üretme adımlarının tamamı tarayıcınızda, bir Web Worker içinde çalışır. Eşleştirme sırasında geliştirici araçlarının ağ sekmesini açık tutarsanız tek bir istek bile göremezsiniz.

Bu bir gizlilik tercihi olduğu kadar pratik bir tercih: müşteri URL listesi çoğu ajans için gizli bilgidir ve bir web aracına yüklenmesi gerekmez. Yalnızca ayarlarınız (eşik, çıktı biçimi, ağırlıklar) tarayıcınızın yerel deposunda hatırlanır. Verileriniz hatırlanmaz — sayfayı kapattığınızda listeniz de sonuçlarınız da gider. Bu yüzden sonuçlarınızı indirmeden sayfadan ayrılmayın.