İçeriğe geç

Yönlendirme Kontrolü rehberi

Araç rehberi. Güncellendi .

Yönlendirme Kontrolü HTTP, HTTPS ve www varyantlarını son sayfaya kadar nasıl izler, 301, 302, 307, 308 ne demek, döngüler ve uzun zincirler nasıl düzeltilir.

Yönlendirmeler ne işe yarar

Yönlendirme, 3xx durum kodu taşıyan ve istemciye bunun yerine nereye gitmesi gerektiğini söyleyen bir Location başlığı içeren yanıttır. Tarayıcılar bu yanıtı kendiliğinden izler; arama motoru tarayıcıları ve HTTP kitaplıklarının çoğu da öyle. Siteler yönlendirmeleri ziyaretçileri HTTP'den HTTPS'e taşımak, tek bir sunucu adında (www ile ya da www olmadan) karar kılmak ve bir yeniden tasarımdan sonra eski URL'leri çalışır durumda tutmak için kullanır. Kısacası yönlendirme, adresin değiştiğini istemciye standart bir biçimde bildirmenin yoludur.

Her atlama bir gidiş-dönüş maliyeti doğurur ve eklenen her atlama, bir şeylerin ters gidebileceği yeni bir yerdir. Temiz bir kurulum son sayfaya bir ya da iki yönlendirmede ulaşır. Yönlendirme Kontrolü tüm zinciri gösterir; böylece ziyaretçilerin ve arama motoru tarayıcılarının tam olarak neyden geçtiğini görürsünüz. Zincirin her halkasını tek tek görmek, sorunun hangi katmandan, yani CDN'den mi, web sunucusundan mı yoksa uygulamadan mı kaynaklandığını anlamayı da kolaylaştırır.

Sağlıklı tipik bir yönlendirme zinciriİstek http://example.com adresinde başlar, https://example.com adresine yönlendirilir, oradan da 200 yanıtı veren https://www.example.com adresine gider.http://example.com/301 → https://example.com/ (aynı sunucudaHTTPS'e geçiş)https://example.com/301 → https://www.example.com/ (tercih edilensunucu adı seçilir)https://www.example.com/200 OK: son sayfa
İstek http://example.com adresinde başlar, https://example.com adresine yönlendirilir, oradan da 200 yanıtı veren https://www.example.com adresine gider.

Yönlendirme Kontrolü nasıl kullanılır

  1. Yönlendirme Kontrolü aracını açın ve bir alan adı girin, örneğin example.com.
  2. XGM kendi sunucusundan http://example.com, https://example.com, http://www.example.com ve https://www.example.com adreslerini ister ve her zinciri, meta refresh etiketleri dahil olmak üzere on atlamaya kadar izler.
  3. Tablo bu dört adresin her birinin nerede bittiğini gösterir; ham zincirler ise her atlamayı durum kodu, Location başlığı ve yanıt süresiyle birlikte listeler.
  4. Bulguları okuyun: farklı URL'lerde biten varyantlar, atlanabilecek atlamalar, meta refresh, geçici yönlendirmeler, döngüler, protokol düşüşleri ve hatalar.
  5. Yapılandırmayı düzeltin ve kontrolü kalıcı bağlantıdan yeniden çalıştırın. Tam rapor sekmesi ayrıca http:// ve https:// son URL'lerini karşılaştırır ve kanonik etiketi okur.

Her yönlendirme hedefi, başlangıç URL'siyle aynı kurallara göre denetlenir; bu yüzden özel bir ağın içine işaret eden zincir durdurulur. Bu hem XGM'yi korur hem de dahili bir sunucuya yapılan yönlendirmenin izlenmek yerine reddedilmiş olarak görünmesi anlamına gelir. Beklemediğiniz bir yerde böyle bir ret görürseniz, kuralın üretim ortamında sızdırdığı iç adresi bulmuşsunuz demektir.

Yönlendirme durum kodları

Yönlendirmelerde kullanılan 3xx kodları
KodAnlamıTakip isteğindeki yöntemKullanım alanı
301 Moved PermanentlyKalıcıİstemciler POST'u GET'e çevirebilirSayfaların ve sunucu adlarının kalıcı taşınması
308 Permanent RedirectKalıcıYöntem ve gövde korunurAPI'lerin ve form hedeflerinin kalıcı taşınması
302 FoundGeçiciİstemciler POST'u GET'e çevirebilirKısa süreli yönlendirmeler
307 Temporary RedirectGeçiciYöntem ve gövde korunurAPI'lerin geçici yönlendirilmesi
303 See OtherBaşka bir kaynağa GET ile gidilirHer zaman GETForm gönderiminden sonra

Arama motorları kalıcı yönlendirmeleri, eski URL yerine hedef URL'yi dizine ekleme sinyali olarak değerlendirir. Geçici bir yönlendirme ise eski URL'yi kanonik adres olarak korur; HTTP'den HTTPS'e geçişte ya da alan adı değişikliğinde bu neredeyse hiçbir zaman istediğiniz sonuç değildir. Araç geçici yönlendirmeleri ayrıca not eder; böylece bunların bilinçli bir tercih mi yoksa unutulmuş bir geçici çözüm mü olduğuna siz karar verirsiniz.

Bulgular ne anlama gelir

Yönlendirme Kontrolü bulguları
BulguÖnemYapılacak
Yönlendirme yokGeçtiURL doğrudan yanıt veriyor. http:// için bu, HTTPS yönlendirmesinin bulunmadığı anlamına gelir; son URL bulgusuna bakın.
Erişilebilen tüm varyantlar şurada bitiyor …GeçtiDört giriş URL'si de döngü ya da meta refresh olmadan tek bir son URL'ye ulaşıyor.
Varyantlar n farklı URL'de bitiyorUyarıTek bir son URL seçin ve diğerlerini 301 ile ona yönlendirin.
… adresine ulaşmak n atlama sürüyorBilgi ya da uyarıİki atlama yalnızca bir nottur, üç ve üzeri uyarıdır; doğrudan son URL'ye yönlendirin. http:// adresinden aynı sunucudaki https:// adresine yapılan ilk atlama hiçbir zaman gereksiz sayılmaz.
… meta refresh ile yönlendiriyorUyarıDevam eden bir HTML sayfası yerine HTTP 301 ile yanıt verin.
… önce https://example.com adresine yönlendirmiyorBilgiYalnızca çıplak alan adının HSTS preload listesine girmesi için gereklidir.
Geçici yönlendirmeler (302/307)BilgiTaşıma kalıcıysa 301 ya da 308 kullanın.
Yönlendirme döngüsü saptandıKritikZincir aynı URL'yi iki kez ziyaret ediyor; çakışan kuralları düzeltin.
10'dan fazla yönlendirmeKritikAtlama sayısı çok fazla; kuralları sadeleştirin.
Bir atlama https:// adresinden http:// adresine yönlendiriyorKritikProtokolü asla düşürmeyin; tüm yönlendirmeleri HTTPS adreslerine gönderin.
Site düz HTTP üzerinde bitiyorUyarıSunucuya HTTP'den HTTPS'e bir yönlendirme ekleyin.
… HTTP 4xx/5xx ile bitiyorKritikZincir bir hata sayfasında bitiyor; hedefi düzeltin.
www.example.com çözümlenmiyorBilgiKullanılmıyorsa sorun değil; aksi hâlde DNS kaydı ve bir yönlendirme ekleyin.

Yaygın sorunları düzeltmek

Uzun bir zinciri kısaltmak

Zincirler, kurallar birbirinden bağımsız eklendiğinde uzar: CDN HTTPS'i zorunlu kılar, web sunucusu www ekler, uygulama sondaki eğik çizgiyi ve dil önekini ekler. Her kural bir kez yönlendirir, hepsi birlikteyse dört atlama oluşur. Her eski varyantı doğrudan son URL'ye yöneltin. Kuralları tek tek eklemek yerine hepsini tek bir yerde toplamak, ileride kimsenin aynı işi ikinci kez yapmasını da engeller.

nginx: varyant başına tek atlamada HTTPS ve www
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

HSTS preload istisnadır

HSTS preload istiyorsanız ilk atlama aynı sunucuda kalmalıdır (http://example.comhttps://example.com); ancak o zaman çıplak alan adı kendi HSTS başlığını gönderebilir. HSTS rehberine bakın.

Döngüyü kırmak

Döngüler genellikle iki katmanın birbiriyle anlaşamamasından doğar. Tipik örnek şudur: CDN kaynak sunucuya HTTP ile bağlanır, kaynak sunucu da HTTP'yi HTTPS'e yönlendirir ve CDN bu yönlendirmeyi olduğu gibi ziyaretçiye geri iletir. CDN'i kaynağa HTTPS ile bağlanacak biçimde yapılandırın ya da kaynak sunucunun CDN'den gelen iletilmiş protokol başlığına güvenmesini sağlayın. İkinci yolu seçerseniz, başlığı yalnızca CDN'in IP aralıklarından gelen isteklerde kabul edin.

Yolları ve sorgu dizelerini korumak

Her eski URL'yi ana sayfaya gönderen yönlendirmeler, ziyaretçinin bağlamını ve sayfanın arama sıralamasını kaybettirir. Yolu nginx'te $request_uri, Apache'de %{REQUEST_URI} ile koruyun ve değişen yolları tek tek eşleyin. Taşınan bir sayfanın karşılığı gerçekten yoksa, ziyaretçiyi ana sayfaya atmak yerine en yakın kategori sayfasına yönlendirin.

Dört varyantı da test edin

Ziyaretçiler aynı sitenin dört sürümüne ulaşabilir: http://example.com, http://www.example.com, https://example.com ve https://www.example.com. Dördü de mümkün olan en az atlamayla aynı son URL'de bitmelidir. Yalnızca kendi yazdığınız adresi kontrol etmek diğerlerini gözden kaçırır; oysa eski bağlantıların ve yer imlerinin kullandığı adresler tam olarak onlardır.

www tercih edilen sunucu adıyken beklenen sonuçlar
BaşlangıçBeklenen zincir
http://example.com301 → https://example.com → 301 → https://www.example.com (ya da doğrudan www adresine)
http://www.example.com301 → https://www.example.com
https://example.com301 → https://www.example.com
https://www.example.com200

İki HTTP başlangıç noktasını kapsamak için kontrolü hem example.com hem de www.example.com ile çalıştırın; HTTPS varyantları için HTTP Başlıkları Kontrolü aracını kullanın. www adresinin çıplak alan adına, çıplak alan adının da www adresine yönlendirdiği uyuşmazlık, klasik döngünün ta kendisidir. Bu durumda iki kuralın hangi katmanlarda tanımlandığını bulmak, düzeltmenin yarısıdır.

Yönlendirmeler ve arama motorları

Arama motoru tarayıcıları yönlendirmeleri izler ama tarayıcılar gibi kısa zincirleri tercih eder. Her ek atlama keşfi geciktirir ve çok uzun zincirlerde tarayıcıların pes etmesine yol açabilir. Bir site taşımasından sonra kalıcı yönlendirmeleri uzun süre yerinde bırakın; çünkü başka sitelerden gelen bağlantılar ve yer imleri yıllarca eski URL'leri göstermeyi sürdürür. Yönlendirmeleri bir yıl sonra kaldırmak, o bağlantıların tamamını 404 sayfasına çevirir.

  • Site içinde yönlendirme yapan adreslere değil, doğrudan son URL'lere bağlantı verin.
  • Her sayfadaki kanonik bağlantı öğesini son URL ile aynı yapın.
  • Site haritalarını yalnızca son URL'leri listeleyecek biçimde güncelleyin.
  • Bütün bir alan adını taşırken alan adı taşıma kontrol listesini kullanın.

SSS

Kontrol neden http:// ile başlıyor?

HTTP'den HTTPS'e yönlendirme sonucun bir parçası olsun diye. Birçok ziyaretçi hâlâ eski bağlantılarla ya da protokol yazmadan girdikleri adreslerle geliyor.

301 mi 308 mi daha iyi?

Web sayfaları için ikisi de iş görür. 308, istek yönteminin korunmasını garanti eder; bu da POST yapan API'ler ve formlar için önemlidir. 301 ise sayfa taşımalarında geleneksel tercihtir.

Kaç yönlendirme fazla sayılır?

Tek atlama, ilki http:// adresinden aynı sunucudaki https:// adresine gidiyorsa iki atlama idealdir. Araç üçüncü atlamada uyarır ve onuncudan sonra durur; istemciler ile arama motoru tarayıcıları da aşağı yukarı orada pes eder.

Yönlendirmeler SEO'ya zarar verir mi?

Kalıcı yönlendirmeler sinyallerin çoğunu hedefe aktarır. Sorun çıkaran şeyler uzun zincirler, kalıcı taşımalarda kullanılan geçici yönlendirmeler ve ilgisiz sayfalara yapılan yönlendirmelerdir.

Araç JavaScript ya da meta refresh yönlendirmelerini görebiliyor mu?

Meta refresh etiketlerini evet: HTML sayfasının ilk 64 KB'ı okunur ve URL içeren bir refresh, atlama olarak izlenip işaretlenir. JavaScript yönlendirmelerini hayır; onlar için sayfayı çalıştıran bir tarayıcı gerekir.

Bir yönlendirme hedefi neden reddediliyor?

Hedefler, başlangıç URL'siyle aynı genel adres kurallarına göre denetlenir. Özel ya da dahili bir adrese işaret eden zincir durdurulur.

HTTPS sayfaları hiç HTTP'ye yönlendirmeli mi?

Hayır. Protokol düşüşü ziyaretçiyi ikinci istekte açığa çıkarır ve HSTS ile çelişir. Araç bunu kritik olarak işaretler.

Kaynaklar