Daha İyi Bir Yardım Belgesi
Site taşıması yürüten markalar ve ajanslar için yazıldı ve güncel tutuluyor. Özellikle her saati değerlendirmesi gereken küçük ekipler için. Bu kılavuz, Shopify’a taşınıyorsanız 301 yönlendirmelerini eksiksiz tamamlayacak bir strateji kurmanıza yardımcı olur. Bu belge özellikle şu durumlarda işinize yarar:
- Wordpress’ten taşınıyorsanız
- Magento’dan taşınıyorsanız
- Salesforce’tan taşınıyorsanız
- Sitecore’dan taşınıyorsanız
- BigCommerce’ten taşınıyorsanız
- Webflow’dan taşınıyorsanız
- Kendi geliştirdiğiniz bir PHP sitesinden taşınıyorsanız
Karmaşık 301 yönlendirme eşlemeleri içeren bir proje yürütüyorsanız ve tam olarak bu işi yapan bir ekibe ihtiyacınız varsa, bize ulaşın.
Shopify’ın URL Yönlendirme Mantığı: Genel Bakış
URL yönlendirmeleri için resmi Shopify yardım belgesine buradan ulaşabilirsiniz. Bir Shopify mağaza yöneticisinin tekil ve toplu 301 yönlendirmeleri eklemek için başvurabileceği, genel yönergeler içeren sade bir belge. Bir Shopify mağazasının yerel olarak hangi URL türlerini desteklediğine dair ayrıntı vermiyor; bu rapor da o boşlukları doldurmak için hazırlandı.
Shopify’ın URL Yönlendirme İşlevselliğine Dair Bulguların Özeti
- Shopify’ın URL yönlendirme mantığı oldukça sağlam.
- 100 farklı URL dizesi biçimiyle yaptığımız testte Shopify bu türlerin 100’de 99’unu işlevsel olarak destekledi.
- Gerçek bir vitrin rotası her zaman bir yönlendirmeyi sessizce geçersiz kılıyor.
- Yerel sistem URL yönlendirmelerinde joker karakterleri desteklemiyor.
- Shopify’ın belgelenmemiş kurallarına uyduğunuz sürece mevcut URL yönlendirme yollarını içe aktarma aracıyla güncellemek kolaydı
- Shopify ve ShopifyPlus mağazalarının yöneteceği toplam yönlendirme sayısında sınırlar var.
- Bir URL yönlendirme dizesinin toplam karakter sayısında sınırlar var.
- Zincir engelleme kısmi. Shopify tek bir yönü bloke ediyor ve oluşturma sırası hâlâ canlı bir zincir bırakabiliyor.
- Parametreli URL’ler için pek çok istisna ve kural var.
- URL yönlendirme yönetimi arayüzü kullanıcı dostu ama daha fazla ayrıntıdan fayda görebilir.
- Testler Hydrogen ve Oxygen için sunulan yönlendirme seçeneklerini incelemedi.
- Shopify’ın mevcut URL yönlendirme sistemine %85 yararlılık puanı veriyoruz.
Puan, joker karakter desteği olmadığı için %5, desteklemediği tek URL dizesi türü için %1, URL karakter uzunluğu sınırları için %2, parametreli URL’lerdeki tuhaf davranış için %3 ve yönlendirme deneyiminde eksik olan temel bilgi yönetimi ayrıntıları için %4 düşürüldü.
İlk test 19 Haziran 2024 tarihinde yapıldı. 27 Temmuz 2026 tarihinde, canlı bir Shopify standart plan mağazasında, Admin GraphQL API üzerinden ve canlı vitrin istekleriyle yeniden test edildi. İkisi arasında değişenler değişiklik günlüğünde listeleniyor.
Yönlendirme Test Yöntemimiz
Shopify’ın 301 yönlendirme kurallarındaki tuzaklardan kaçınmaya yardımcı olmak için testlerimizle birkaç soruyu yanıtlamak istedik:
- URL yönlendirme sistemi hangi karakterleri veya dize kombinasyonlarını desteklemiyor?
- URL dizesi uzunluğunda sınırlar var mı?
- Toplu içe aktarmalarda azami bir kayıt sayısı var mı?
- Sistem joker karakterli yönlendirmeleri destekliyor mu?
- İçe aktarmadan sonra özgün veriyi değiştiren bir otomatik biçimlendirme veya dönüştürme oluyor mu?
Referans olarak, bu farklı koşulları test etmek için kullandığımız URL listemizin tamamı burada. Testler Shopify standart planda yapıldı (ShopifyPlus değil).
Shopify Yönlendirmelerinde İşinize Yarayacak 11 Bulgu
Shopify Şu URL Dizesi Türleriyle Anlaşamıyor
Test ettiğimiz yüz biçimden biri güvenilir şekilde yönlendirilemiyor. Shopify kaydı kabul edip saklıyor ama onu isteyen bir tarayıcı 404 alıyor. Eşittir operatöründen sonra noktalı virgül taşıyan bir dize, örneğin:
/page?param=;semicolon
Bu dizede dikkat çeken şey, Shopify sisteminin noktalı virgül özel karakterini yönlendirme tablosunda şu şekilde URL kodlu değere çevirmesi:
/page?param=%3Bsemicolon
Kodlanmamış URL dizesini bir tarayıcının adres çubuğuna girdiğinizde 404 hatası dönüyor.
/page?param=;semicolon
/page?param=%3Bsemicolon
Bu davranış diğer özel karakterlerin işlenişinden ayrılıyor. Adres çubuğuna kodlanmamış karakterler içeren bir URL dizesi girilirse, örneğin sağ süslü parantez karakteri:
/page?param=}
Shopify, URL isteği alındığında bunu otomatik olarak kodluyor ve hiçbir 404 hatası oluşmuyor.
/page%7Drightbrace
Ayrıca dikkat çekici olan, kodlanmamış noktalı virgül içeren diğer URL dizesi varyasyonlarının Shopify’ın yönlendirme sisteminde geçerli sayılması, örneğin:
/page;semicolon
404 yalnızca eşittir operatöründen sonra kodlanmamış bir noktalı virgül geldiğinde tetikleniyor ve hata içe aktarmada değil istek anında ortaya çıkıyor. Shopify kaydı, noktalı virgülü %3b olarak yüzde kodlayarak saklıyor ve ham noktalı virgül taşıyan bir gelen URL kodlanmış kayıtla asla eşleşmiyor. Kodlanmış biçim istendiğinde normal şekilde 301 dönüyor, dolayısıyla gelen bağlantıları siz kontrol ediyorsanız noktalı virgülü yüzde kodlamak sorunu çözer. Ham noktalı virgül kontrol etmediğiniz dış bağlantılardan geliyorsa bu biçim güvenilir şekilde yönlendirilemez.
Shopify’da Joker Karakterli Yönlendirme Desteği Yok
Joker karakterli yönlendirmeler hâlâ pek çok Shopify kullanıcısının istek listesinde. Destek forumları bu özelliğe dair taleplerle dolu. Shopify bugüne kadar bunun ürün yol haritasında nereye düştüğü konusunda sessiz kaldı.
Şimdilik Shopify’a geçmeyi planlayan site sahiplerinin şunu bilmesi gerekiyor: yerel Shopify ve ShopifyPlus bu seçeneği sunmuyor.
Joker karakterli yönlendirme nedir?
Joker karakterli yönlendirme, belirli bir kalıba uyan birden fazla URL’yi tek bir hedefe yönlendirmenizi sağlayan bir URL yönlendirme türüdür. Bir siteyi taşırken, içeriği yeniden düzenlerken veya çok sayıda benzer URL’yi yönetirken özellikle işe yarar. Her URL için ayrı ayrı yönlendirme kurmak yerine, herhangi bir karakter dizisini temsil eden bir joker karakter (genellikle *) kullanırsınız.
Diyelim ki blogunuzu yeniden yapılandırıyorsunuz ve bütün yazıları /blog/ dizininden /articles/ dizinine taşıyorsunuz. Her blog yazısı için ayrı yönlendirme kurmak yerine bir joker karakterli yönlendirme kullanabilirsiniz:
From: /blog/*
To: /articles/*
This wildcard redirect will automatically map:
/blog/post1 to /articles/post1
/blog/post2 to /articles/post2
/blog/post3 to /articles/post3
Bu, yönlendirme sürecini basitleştirir ve /blog/ altındaki bütün URL’lerin yeni konumlarına sorunsuz yönlendirilmesini sağlar. Shopify ve ShopifyPlus varsayılan mağazaları bu yeteneği uygulama desteği olmadan içermiyor.
İnsanlara trafik kaybettiren kısım, Shopify’ın joker karakter sözdizimini itirazsız kabul etmesi. /old-blog/* olarak oluşturulan bir kayıt kaydediliyor, yönlendirme tablosunda görünüyor ve hiçbir hata bildirmiyor. Yıldız işareti düz bir karakter olarak saklanıyor, dolayısıyla eşleşeceği tek URL, içinde gerçekten yıldız işareti bulunan bir URL. Bu, doğrudan reddedilmekten daha kötü, çünkü gerçek trafik 404 dönmeye başlayana kadar hiçbir şey hatayı işaret etmiyor. Yönlendirme dosyanızdaki joker karakterleri içe aktarmadan önce açık yollara genişletin.
Shopify Yönlendirme Zinciri Oluşmasını Önlemek İçin Elinden Geleni Yapıyor
Shopify’ın zincirlere karşı bir koruması var ve ona güvenmeden önce sınırlarını anlamakta fayda var. Hedefi zaten başka bir yönlendirmenin kaynağı olan bir yönlendirmeyi Target can't redirect to another redirect diyerek reddediyor. Kendisine işaret eden bir yönlendirmeyi Target can't be the same as path diyerek reddediyor ve doğrudan iki yönlü döngüleri engelliyor.
Bu testte oluşturmaya çalıştığımız URL kayıtları şunlardı ve buna izin verilmedi:
/BOTH redirects to /SHORT/SHORT redirects to /homepage
Korumanın yapmadığı şey ters yönü denetlemek. /b adresinde hiçbir şey yokken /a için /b yönlendirmesini oluşturun, sonra /b için /c yönlendirmesini oluşturun; ikisi de kabul edilir. Shopify ilk kayda bir daha bakmaz ve elinizde canlı bir zincir kalır:
GET /a
301 to /b
301 to /
final: 200, 2 hops
Bir zincirin oluşup oluşmayacağına tek başına oluşturma sırası karar veriyor. Toplu içe aktarmalar satırları dosya sırasına göre uyguluyor ve taşıma dosyaları bundan kaçınmak için nadiren sıralanıyor, dolayısıyla koruma etrafında plan yapılacak bir şey değil. Büyük bir içe aktarmadan sonra yönlendirmelerinizden örnek alın ve sıçramaları sayın:
curl -sIL https://yourstore.com/old-path -o /dev/null -w "hops: %{num_redirects}
"
1’in üzerindeki her değer bir zincirdir.
Yönlendirme zinciri nedir?
Yönlendirme zincirleri, bir URL’nin başka bir URL’ye, onun da bir başkasına yönlendirilmesiyle bir yönlendirme dizisi ya da “zinciri” oluşması durumunda ortaya çıkar. Bu, zaman içinde düzgün yönetilmeden kurulan birden fazla yönlendirmeyle istemeden oluşabilir.
Yönlendirme zincirleri sorunludur, çünkü sayfa yükleme sürelerini yavaşlatabilir, SEO’yu olumsuz etkileyebilir ve kötü bir kullanıcı deneyimi yaratabilir. Her ek yönlendirme gecikme ekler, çünkü tarayıcı nihai hedefe ulaşmadan önce zincirdeki her adımı izlemek zorundadır.
Örneğin, şu yönlendirmeleri kurduysanız:
/old-page redirects to /new-page
/new-page redirects to /latest-page
Bir kullanıcı /old-page adresini ziyaret ettiğinde önce /new-page adresine, hemen ardından /latest-page adresine yönlendirilir ve ortaya bir yönlendirme zinciri çıkar.
Shopify’da Yönlendirme Kurarken Uyulacak Yeni Kurallar
Testlerimizdeki en büyük keşfimiz, Shopify’ın dokümantasyonunun güncel olmadığı ve altında yatan kuralın, belgelenen ayrılmış önek listesinden daha basit olduğu.
Gerçek bir vitrin rotası her zaman bir yönlendirmeyi geçersiz kılar. Bir URL’de gerçekten bir sayfa varsa Shopify sayfayı sunar ve yönlendirmeyi yok sayar. Kayıt kabul edilir, yönlendirme tablonuzda durur ve hiçbir şey yapmaz. Hata yok, uyarı yok. Değişken önek değil. Bir rotanın var olup olmaması:
/products/ai-skillset-package-001 -> 200, the product page
/products/zz20260727 -> 301, the redirect fires
Aynı önek, zıt sonuç. Bu, Shopify’ın belgelediği dört yolu değil, mağazanızdaki her canlı ürünü, koleksiyonu, sayfayı ve blog yazısını kapsıyor. Yayındaki bir ürün URL’sine konan yönlendirme, o ürün çözümlenmeyi bırakana kadar etkisizdir; bu da taşıma sırasında sıralamayı önemli kılar: önce eski kaynağı yayından kaldırın veya silin, sonra yönlendirmenin çalıştığını doğrulayın.
Shopify’a göre, şu ayrılmış öneklerle başlayan bir şeyi yönlendirmeye çalışırsanız yönlendirme kurallarınız oluşturulmaz:
/apps
/application
/cart
/carts
/orders
/services
/products
/collections
/collections/all
Bunun doğru olmadığını gördük.
/apps/application/carts/orders/services/cart/people
Cart istisnaydı. Tek başına ayrılmış durumda ve ardından bir alt dizin geldiğinde çalışıyor.
/cart/products/collections/collections/all
/cart/people/carts/people/products/people/collections/people
/cart/products/collections/collections/all
/services bu gruptaki istisna ve diğerlerinin tam tersi davranıyor. /services üzerindeki bir yönlendirme 301 döndürüyor. Altındaki herhangi bir şey, örneğin /services/consulting, kayıt itirazsız kaydedilse bile 404 döndürüyor. Yayılma gecikmesini elemek için bunu yaklaşık 45 saniye boyunca dört kez yeniden test ettik ve kayıt bu süre boyunca tabloda duruyordu. Bu gruptaki diğer bütün önekler alt dizinlerle çalıştı.
Muhtemel neden, Shopify’ın /services/* yolunu uygulama proxy’leri ve sistem uç noktaları için dahili olarak yönlendirmesi, dolayısıyla bu isteklerin yönlendirme tablosuna hiç ulaşmaması; ancak mekanizmayı doğrudan doğrulamadık. /services/ bölümü olan bir siteyi taşıyorsanız o yönlendirmelerin hiçbiri çalışmaz. Onları farklı bir yol yapısına eşleyin ya da DNS veya proxy katmanınızda çözün.
Shopify’da URL Yönlendirmesi Oluşturmak ve Güncellemek Kolay
Shopify’da yeni bir yönlendirme oluşturmak basit. Kullanıcılara iki seçenek sunuyorlar:
- Teker teker, tekil URL yönlendirmesi oluşturma
- CSV dosyasıyla toplu yönlendirme oluşturma - bu içe aktarma için en güncel şablon burada.
Shopify sistemine URL eklerken kullanıcılar kaynak (şuradan) alanına üst düzey alan adı olmayan göreli URL yolları, hedef (şuraya) alanına ise mutlak veya göreli URL yolları girebilir. Örnek:
/example_product.php
Tekil URL Yönlendirmeleri Oluşturma
Shopify’ın koyduğu yönlendirme kuralları, tekil yönlendirme arayüzünü kullanırken aynı URL yönlendirmesini iki kez oluşturmanıza izin vermiyor.
Bir URL “Şuradan yönlendir” tablosuna girdikten sonra onu tekrar eklemeye çalışırsanız hata alırsınız.
Tekil URL kaydını güncellemek istiyorsanız onu yönlendirme tablosunda bulmanız ya da toplu içe aktarma yöntemini kullanmanız gerekiyor. Zaten var olan bir URL toplu içe aktarma dosyasına dahil edilirse, kaydın “Şuraya yönlendir” alanı CSV dosyasındaki değerle güncellenir.
Tavsiyemiz, yönlendirmeleri her zaman yönetilebilir ve verimli partiler hâlinde içe aktarmanız. Örneğin 10.000 URL yönlendirmeniz varsa seferde 1.000 tanesini içe aktarın ve vaktiniz varsa kontrol edin. Hataları küçük veri kümelerinde yakalamak, büyüklerinde avlamaktan iyidir.
Shopify’da Toplu URL Yönlendirmelerinde Dikkatli Olun
Toplu yönlendirme oluşturmak için CSV dosyasını Shopify’ın istediği başlıklarla doldurun, 1:1 eşlemeleri kurun ve bütün URL’lerin göreli yol olarak biçimlendirildiğinden emin olun. “Şuradan yönlendir” veya “Şuraya yönlendir” alanlarında mutlak yollar bulunan bir dosya oluşturursanız Shopify işi kendi eline alır. İşte birkaç senaryo:
https://www.wislr.com/path/to/resource%20with
/path/to/resource%20with
www.wislr.com/unicode/test?value=%E2%9C%93%20co.wislr.com/mix/of%20encoded
/www.wislr.com/unicode/test?value=%E2%9C%93%20/co.wislr.com/mix/of%20encoded
wislr.com/nested/directory/structure?param1=value1
/wislr.com/nested/directory/structure?param1=value1
Çıkarılacak ders, içe aktarma dosyanızı kullanmadan önce iki kez kontrol etmek. Aksi hâlde ihtiyacınız olduğu şekilde çalışmayan URL yönlendirme kuralları oluşturursunuz.
Bir yönlendirme kaydı tabloda zaten varsa ve aynı değerler içe aktarma dosyasında da yer alıyorsa, Shopify kaydı içe aktarma dosyasındaki en güncel veriyle günceller. Bize göre bu son derece faydalı, tabii o kaydın güncellenmesini istiyorsanız. Veriyi iki kez kontrol etmek için bir sebep daha.
Shopify dosya başına satır tavanı dayatmıyor. Tek seferde 1.051 satırlık bir içe aktarma hiç hata vermeden 48 saniyede tamamlandı, bu da dakikada yaklaşık 1.300 satır ediyor.
1.000 civarındaki partiler yine de kullanmaya değer, ama sert bir sınır olduğu için değil. Küçük dosyalar daha okunaklı hata veriyor. 20.000 satırlık bir içe aktarma ters giderse, yirmi dosya çalıştırıp sayaçları izlemiş olmanıza kıyasla hangi satırların soruna yol açtığına dair çok daha az fikriniz olur. Her içe aktarmadan sonra createdCount, updatedCount ve failedCount değerlerini okuyun, çünkü sıfırdan farklı bir failedCount, satırların düştüğüne dair aldığınız tek sinyaldir.
Yönlendirme tablosunda zaten bulunan bir yolun hedefinin üzerine yazılır, bu updatedCount altında raporlanır ve kayıt özgün kimliğini korur. Bu, bir CSV içe aktarmasını yeniden çalıştırmayı güvenli kılar ve taşımanın ortasında işe yarar. Aynı zamanda eski bir dosyanın, son içe aktarmadan bu yana elle yaptığınız düzeltmelerin üzerine sessizce yazacağı anlamına gelir.
Yönlendirme haritasını sizin için kuralım.
100'den fazla taşımada yönlendirme eşlemesi yaptık, bunların içinde Shopify Plus'a 27.000 URL'lik bir taşıma da var. Dosyayı biz kuruyor ve içe aktarılmadan önce bu sayfadaki her sınıra karşı doğruluyoruz. Geçişten sonra yönlendirme tablosunun söylediğine güvenmek yerine canlı yanıtları kendimiz okuyoruz.
Shopify’ın URL Yönlendirme Kayıtlarındaki Sınırı
Her güzel şeyin bir sınırı vardır, Shopify’ın yönlendirme kuralları da farklı değil. URL yönlendirmeleri için iki eşik var.
Shopify Planları (Plus değil):
En fazla 100.000 URL yönlendirmesi
ShopifyPlus Planları:
En fazla 20.000.000 yönlendirme
Bu sınırları test etmedik, bu çılgınlık olurdu! Bunlar platformun güncel belgelenmiş özellikleri. Yönlendirmelerinizi planlarken bunları aklınızda tutun ve trafik ile gelir açısından en önemli URL’lere öncelik verin. Bildiğimiz kadarıyla Shopify, destek forumlarındaki sürekli ricalara rağmen bu sınırları yükseltmiyor.
Shopify’ın URL Karakterlerindeki Sınırı
Shopify’ın yönlendirme sisteminde işlerin tatlandığı yer burası. Shopify’ın resmi yönergeleri kesin karakter sınırları belirtmiyor.
Bir yönlendirmedeki URL karakter sınırlarını doğrulamak için önce çok uzun dizeler kurup içe aktarmayı denedik. Tarayıcılar 2.083 karakter uzunluğuna kadar URI isteklerini işleyebildiği için 2.000 karakterlik bir URL ile başladık. İşte tüm güzelliğiyle kendisi:
/2000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBccccccccccccccccccccccccccccccccccccccccccccccccccccDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
İlk yöntemimiz, toplu yönlendirme şablonunu kullanarak 2.000 karakterlik bir URL’yi içe aktarmaktı ve Shopify’ın alarmları o zaman çaldı. Resmen keşfettiğimiz eşik, eğik çizgi öneki ‘/’ dahil olmak üzere URL yönlendirme dizeleri için 1.024 karakterlik bir sınır oldu.
- Passed 300 karakterlik URL
- Passed 600 karakterlik URL
- Passed 1.000 karakterlik URL
- Failed 2.000 karakterlik URL
Shopify Hakkında Bilinmesi Gereken Bazı Önemli ve Belgelenmemiş Yönlendirme Kuralları
Shopify, URL dizelerinizdeki alfabetik karakterleri normalleştirir. Yani büyük ya da küçük harf girmeniz fark etmeksizin bu farklı kalıplar için gelen URL isteklerini aynı şekilde karşılar. Ayrı kayıtlar bulunsa bile şu URL’lerin hepsi aynı sayfaya gider:
/CASE/TEST.html
/case/test.html
/Case/Test.html
Küçük harfli dize diğerlerine göre öncelikli olur:
/case/test.html
Testlerimizde, “Şuradan yönlendir” için farklı “Şuraya yönlendir” değerlerine sahip iki ayrı kayıt bulunmasına rağmen her iki kayıt için de her zaman /about.html sayfası sunuldu:
#1
/Case/Test.html [redirect to] /homepage
#2
/case/test.html [redirect to] /about.html
Shopify’ın bu benzersiz değerlerin hepsini yönlendirme tablosuna girmenize izin verip yalnızca birini sunması hem ilginç hem de can sıkıcı olabilir. URL taksonominizin bu kalıplara girebileceğini düşünüyorsanız Shopify’a aktarmadan önce verinizi dikkatle gözden geçirmenizi öneririz.
Shopify Yönlendirmelerinde Mutlak URL Yolları Kullanabilirsiniz
Testimize göre yönlendirmeleriniz için mutlak URL yolları, “Şuraya yönlendir” alanındaysa sorun değil. İstediğiniz herhangi bir URL olabilirler. İşte bir URL yolunun istendiğinde bir LinkedIn profiline yönlendirildiği bir örnek:
[Redirect from]
/Case/Test.html
[Redirect to]
https://www.linkedin.com/wislr
Ayrıca “Şuraya yönlendir” alanında Shopify, kendi Shopify mağazanız için olsa bile üst düzey alan adlarını kaldırmıyor.
Parametreli URL’ler
Testlerimizde Shopify parametreli URL’leri bazı istisnalarla korudu. Çok sayıda benzersiz parametreli URL dizesiyle dizine girmiş URL’leriniz varsa, o benzersiz dizeler Shopify’ın yönlendirme tablolarına eklenip benzersiz hedeflere gidebilir. Bu testi, bu tür URL’lerde yaygın bir taksonomiyle, UTM parametreleriyle yaptık. Örneğin:
Bu URL dizesi yönlendirme tablosunun “Şuradan yönlendir” alanındaydı ve amaçlanan hedefine gitti:
/how-is-pkl?utm_campaign=301s+in+2024&utm_content=blue&utm_id=3012024&utm_medium=display&utm_source=google&utm_term=redirects
URL dizesini değiştirip son parametreyi, ‘&utm_term=redirects’ kısmını kaldırdık ve bu bir 404 oluşturdu:
/how-is-pkl?utm_campaign=301s+in+2024&utm_content=blue&utm_id=3012024&utm_medium=display&utm_source=google
Bu davranış farklı parametre değerleriyle yapılan başka testlerde de tekrarlandı ve Shopify’ın parametreli URL’leri düz dize olarak ele aldığını doğruladı. Bir yönlendirme URL’sinden bir parametre kaldırırsanız, URL Shopify sitesinde var olmadığı sürece URL’yi temel URL’ye indirgemiyorlar.
Bunu daha da doğrulamak için bir URL’yi kendisine yönlendirdik; Shopify buna varsayılan olarak izin vermiyor. Şu mesajı alırsınız:
Parametreler “Şuradan yönlendir” alanında olduğunda bu girdiye izin veriliyor. Bir yönlendirme döngüsü oluşturmuyor ama tarayıcıdaki davranışa bakılırsa testimiz Shopify’ın bu kaydı yok saydığını gösterdi. “Şuradan yönlendir” URL’si istendiğinde Shopify, tabloda beklendiği gibi kök sayfayı değil, parametreli URL dizesinin tamamını sunuyor:
Bu girdiye izin veriliyor ama Shopify, kuralın beklediği gibi parametreleri yüklenen sayfaya eklemiyor. Yalnızca kök URL yükleniyor.
Bu, parametreli kaynak yollar için geçerli. Yönlendirmenin kaynak yolu kendi parametrelerini taşımıyorsa, istekle gelen ne varsa hedefe taşınıyor:
GET /old-page -> 301 to /new-page
GET /old-page?utm_source=x -> 301 to /new-page?utm_source=x
Yönlendirmeler parametreleri sizin için ayıklamaz. Onları kaldırmak Shopify’ın üzerindeki bir katmanda olmak zorunda.
Eşleştirme de düz dize karşılaştırması değil. Shopify hem saklanan kaydı hem de gelen isteği karşılaştırmadan önce normalleştiriyor, dolayısıyla büyük küçük harf ve parametre sırası önemli değil. /page?doe&name=john olarak saklanan bir kayda karşı ?name=John&Doe, ?Doe&name=John ve ?name=john&doe ifadelerinin hepsi 301 dönüyor. Önemli olan hangi parametrelerin bulunduğu: saklanan yoldaki her parametrenin istekte de yer alması gerekiyor ve birini düşürmek kısmi eşleşme değil 404 döndürüyor.
Parametreli URL’lerle ilgili son gözlemimiz, Shopify’ın bazı durumlarda ona verdiğiniz veriyi yeniden yazması. Evet, Shopify bazı parametreler için ona verdiğiniz URL verisini yeniden yazıyor.
Testlerimizin bu kalıbı bulduğu örnekler şunlar.
Shopify’ın aldığı özgün yönlendirme verisi:
/test?name=John&Doe
Shopify dizeyi ‘doe’ önce gelecek şekilde yeniden yazdı ve küçük harfe çevirdi:
/test?doe&name=john
Değerler de anahtarlarla birlikte küçük harfe çevriliyor, dolayısıyla geldiği dosyayla karşılaştırılan bir yönlendirme tablosu, içe aktarma veriyi bozmuş gibi görünecek.
Shopify’ın aldığı özgün yönlendirme verisi:
/user?name=John&age=30&active=true
Shopify dizeyi, listelenen parametreler yeni bir sıraya girecek şekilde yeniden yazdı:
/user?active=true&age=30&name=John
Yaptığımız testler Shopify’ın parametreleri alfabetik sıraya koymaya çalıştığını düşündürüyor. Bunun bir hata olup olmadığını merak ettik, çünkü Shopify’ın parametreli URL’leri düz dize olarak ele aldığını saptamıştık; öyleyse parametre sırasını yeniden yazarak bu kuralı neden zayıflatsın? Şu anda birden fazla parametre değeri taşıyan URL dizelerinin yapısını korumasını asla sağlayamıyorsunuz. Bunun bazı içerik yönetim sistemleri için büyük sonuçları olabilir.
Shopify’ın URL Yönlendirme Deneyimi Güncellenmeli
Shopify’ın yönlendirme aracını yoğun biçimde kullanırken bazı unsurlarını takdir ettiğimizi, bazılarını ise aradığımızı fark ettik.
Şu özellikleri beğeniyoruz:
- Toplu yönlendirme içe aktarma düğmeleri ve işlevi
- URL taksonomisi için filtreleme ve hızlı arama
- URL’lerin dışa aktarımı
- Tek bir URL oluşturmanın kolaylığı
Araçta şu veri noktalarının ve işlevlerin eksik olduğunu gördük:
- İçe aktarılan toplam URL sayısı
- Sisteme birden fazla URL’yi kopyalayıp yapıştırmanın daha kolay bir yolu. Aynı anda birden fazla URL eklerseniz içe aktarma belgesini kullanmak zorundasınız. Kopyala/yapıştır işine yarayacak bir kullanım senaryosu, bir URL kümesinin tamamının aynı hedefe işaret etmesinin istendiği durum.
İçe Aktarmak Hızlı, Bir İçe Aktarmayı Geri Almak Değil
Toplu yönlendirme oluşturmak hızlı. Toplu kaldırmak değil ve aradaki fark, bir içe aktarmayı planlama şeklinizi değiştirecek kadar büyük.
| İşlem | Yöntem | Ölçülen |
|---|---|---|
| 1.051 yönlendirme oluşturma | CSV içe aktarma, tek dosya | 48 saniye |
| 1.051 yönlendirme silme | urlRedirectDelete, teker teker |
226 saniye |
Hızlı toplu silme mutasyonları kısıtlı. urlRedirectBulkDeleteBySearch, urlRedirectBulkDeleteByIds ve urlRedirectBulkDeleteAll mutasyonlarının hepsi write_online_store_navigation kapsamını ve aktif bir kullanıcı oturumunu gerektiriyor. Çoğu taşıma betiğinin çalıştığı yol olan istemci kimlik bilgileriyle kimlik doğrulayan bir uygulama bunları çağıramıyor ve kayıtları teker teker silmek zorunda kalıyor.
İçe aktarmalarınızı geri alması zormuş gibi planlayın, çünkü öyle. Dosyayı önce bir geliştirme mağazasında doğrulayın ya da elle geri almaya razı olduğunuz dilimler hâlinde içe aktarın. Hızlıca geri alabileceğinizi varsayarak test etmediğiniz 50.000 satırlık bir dosyayı göndermeyin.
CSV İçe Aktarma ile Admin API Yinelenenleri Farklı Ele Alıyor
Bu kılavuz, yinelenen bir yolun mevcut kaydı güncellediği CSV akışı etrafında yazıldı. API bunun tam tersini yapıyor:
create /existing-path -> /pages/about
(where /existing-path already redirects to /)
REJECTED: "Path has already been taken"
Bir CSV akışını Admin API’ye taşıyan herkesin mevcut kaydı sorgulayıp urlRedirectUpdate çağırması ya da kaydı silip yeniden oluşturması gerekiyor. İçe aktarma mantığının birebir taşınması, zaten var olan her yolda başarısız olur.
Yayına Aldıktan Sonra Shopify Yönlendirmelerinizi Nasıl Test Edersiniz
Yukarıdakilerin hepsi Shopify’ın neyi kabul edeceğini anlatıyor. Hiçbiri, içe aktardığınız yönlendirmelerin canlı mağazada gerçekten çalışıp çalışmadığını söylemiyor ve bu ayrı bir soru. Bir yönlendirme sorunsuz içe aktarılabilir, yönetim panelinde görünebilir ve yolda bir tema, bir uygulama veya bir proxy varken yine de beklediğiniz şeyi yapmayabilir.
Tarayıcıda tıklayarak değil, mağazanın dışından test edin, çünkü tarayıcı görmeniz gereken şeyi gizler: durum kodunu. Eski URL’yi isteyin ve yanıt başlıklarını okuyun.
curl -sIL https://yourstore.example/old-product-url
Çıktıda üç şeyi okuyun:
- İlk sıçramadaki durum kodu.
301görmek istersiniz.302geçicidir ve değeri farklı aktarır; bütün mesele kalıcı bir taşınmayken bu önemlidir. - Sıçrama sayısı. Çıktıdaki her
HTTP/satırı bir sıçramadır. İki veya daha fazlası bir zincir kurduğunuz anlamına gelir ve çözüm, ara adımı yerinde bırakmak yerine özgün kaynağı doğrudan nihai hedefe yöneltmektir. - Nihai durum. Son satır
200olmalı.404ile biten bir yönlendirme, hiç yönlendirme olmamasından beterdir, çünkü tablonuzda halledilmiş gibi görünür.
Sonra unutulması kolay biçimleri test edin. Aynı kontrolü, sorgu dizesinin hedefe kadar taşındığını doğrulamak için izleme parametresi taşıyan bir URL’de, www yanında kök alan adında ve yalnızca https değil düz http üzerinden de çalıştırın. Bunu canlı bir mağazada tam olarak böyle test ettik ve parametre hedefe olduğu gibi taşındı, ama mesele genel bir yanıta güvenmek yerine bunu kendi mağazanızda doğrulamak, çünkü bir tema veya bir uygulama sonucu değiştirebilir.
Panik yapmadan önce bilinmeye değer bir davranış: bir yönlendirmeyi değiştirdikten veya sildikten sonra bir Shopify uç düğümü yaklaşık otuz saniye boyunca eski yanıtı sunmaya devam edebilirken, aynı URL’nin önbellek kırıcılı bir sürümü çoktan yenisini döndürüyor olabilir. Yönlendirmenin uygulanmadığı sonucuna varmadan önce bir dakika bekleyin ve sonuna benzersiz bir sorgu dizesi ekleyerek tekrar test edin.
Tek bir yönlendirme yerine bir taşımanın tamamındaki sıralama için, bunun içine oturduğu eşleme, yayın günü ve yayın sonrası izleme adımlarını kapsayan site taşıma kontrol listesini adım adım uygulayın.
Sonuç Olarak
Shopify’ın 301 yönlendirmeleri yönetmek için kurduğu sistem çoğu işletme için iyi ama henüz kurumsal seviyede değil. Zamanla joker karakterli yönlendirmeleri ve standart ile Plus planları için daha fazla yönlendirme kaydını kapsayacak şekilde gelişmesini umuyoruz. Yönlendirme sistemini kullanabilme imkânı ve desteklediği çeşitli URL biçimleri, onlara güçlü bir yararlılık puanı vermemizi sağlıyor.
Karmaşık 301 yönlendirme eşlemeleri içeren bir proje yürütüyorsanız ve tam olarak bu işi yapan bir ekibe ihtiyacınız varsa, bize ulaşın.
Değişiklik Günlüğü
Bu kılavuz ilk olarak 19 Haziran 2024 tarihli testlerle yayımlandı ve 27 Temmuz 2026 tarihinde, canlı bir Shopify standart plan mağazasında, Admin GraphQL API üzerinden ve canlı vitrin istekleriyle yeniden test edildi. Özgün bulguların çoğu geçerliliğini korudu. Dokuzu korumadı. Yukarıdaki metin Shopify’ın bugün ne yaptığını anlatıyor, burada da değişenler var.
2024 Shopify yönlendirme zinciri oluşturmanızı engelliyor.
2026 Koruma yalnızca tek bir yönü denetliyor. Hedefi zaten başka bir yönlendirmenin kaynağı olan bir yönlendirmeyi reddediyor ama tersini reddetmiyor, dolayısıyla /a için /b, sonra /b için /c yönlendirmesi oluşturmak canlı, iki sıçramalı bir zincir bırakıyor. Bir zincirin oluşup oluşmayacağına tek başına oluşturma sırası karar veriyor.
/services öneki2024 /services, /apps, /carts ve /orders gibi bir yönlendirme olarak çalışıyor.
2026 /services tek başına çalışıyor ve herhangi bir alt dizinle başarısız oluyor. /services/consulting, kayıt kaydedilse bile 404 döndürüyor. O gruptaki diğer bütün önekler alt dizinlerle çalışıyor.
2024 Dört ayrılmış önek tek başlarına kullanıldıklarında yok sayılıyor: /cart, /products, /collections, /collections/all.
2026 Gözlemler geçerli, açıklama değil. Gerçek bir vitrin rotası her zaman bir yönlendirmeyi geçersiz kılıyor ve bu, dört yolluk bir listeyi değil, her canlı ürünü, koleksiyonu, sayfayı ve blog yazısını kapsıyor.
2024 Parametreler yüklenen URL'ye asla eklenmiyor.
2026 Bu yalnızca parametreli kaynak yollar için doğru. Kaynak yolun kendi parametreleri yoksa, istekteki parametreler hedefe taşınıyor.
2024 Shopify parametreli URL'leri düz dize olarak ele alıyor.
2026 İki taraf da karşılaştırmadan önce normalleştiriliyor, dolayısıyla büyük küçük harf ve sıra önemli değil. Yalnızca parametre kümesi katı ve birini düşürmek 404 döndürüyor.
2024 Parametreler alfabetik sıraya giriyor ve /test?name=John&Doe, /test?Doe&name=John olarak saklanıyor.
2026 Alfabetik sıralama doğrulandı ve büyük küçük harf korunmuyor. Aynı yol /test?doe&name=john olarak saklanıyor, değerler anahtarlarla birlikte küçük harfe çevriliyor.
2024 Shopify, eşittir operatöründen sonra kodlanmamış noktalı virgül taşıyan bir dizeyi alamıyordu.
2026 Sorunsuz alıyor ve noktalı virgülü %3b olarak saklıyor. Hata istek anında ortaya çıkıyor ve kodlanmış biçim istendiğinde 301 dönüyor.
2024 Seferde 1.000 satır içe aktarın.
2026 Bu bir tavan değil. Tek bir 1.051 satırlık dosya hiç hata vermeden 48 saniyede içe aktarıldı. Partiler yine de iyi bir uygulama, çünkü küçük dosyalar daha okunaklı hata veriyor.
2024 Shopify joker karakterli yönlendirmeleri desteklemiyor.
2026 Hâlâ doğru ve üstelik sözdizimini hiçbir hata vermeden kabul ediyor. Yıldız işareti düz bir karakter olarak saklanıyor, dolayısıyla trafik 404 dönmeye başlayana kadar hiçbir şey hatayı işaret etmiyor.
2026 1.051 yönlendirme oluşturmak 48 saniye sürdü. Aynı 1.051 kaydı silmek 226 saniye sürdü, çünkü toplu silme mutasyonları aktif bir kullanıcı oturumu gerektiriyor ve betikle çalışan bir token bunları çağıramıyor.
2026 CSV içe aktarma, zaten var olan bir yolu günceller. Admin API ise onu Path has already been taken diyerek reddeder, dolayısıyla içe aktarma mantığının birebir taşınması var olan her yolda başarısız olur.
Her yönlendirme 301 döndürüyor. 1.024 karakterlik yol sınırına baştaki eğik çizgi dahil; 1.027 karakter reddedildi, 1.015 karakter kabul edildi. Büyük küçük harf normalleştiriliyor ve küçük harf öncelikli. Toplu içe aktarma, göreli bir yol bırakmak için protokolü ve alan adını çıkarıyor, hedef alanı ise mutlak bir dış URL'yi olduğu gibi koruyor. Bir uç düğüm, bir değişiklikten sonra yaklaşık otuz saniye boyunca bayat bir yanıt sunabiliyor.
Kayıt sınırları, standart planlarda 100.000 ve Plus’ta 20.000.000, yeniden çalıştırılmadı. İçe aktarma hattı ölçülmüş durumdayken bunlara ulaşmak mekanik olarak mümkün, ama silme dakikada yaklaşık 280 kayıt hızında ilerliyor ve betikle çalışan bir toplu geri alma yok, dolayısıyla belgelenmiş bir sayıyı doğrulamak canlı bir mağazayı altı saat veya daha uzun süre çöp yönlendirmelerle bırakırdı.
Sıkça Sorulan Sorular
WISLR’ın Shopify URL Yönlendirmeleri bilgi tabanı kime yardımcı olmak için hazırlandı?
Bilgi tabanımız öncelikle Shopify’a site taşıması yürüten markalara ve ajanslara yardımcı oluyor. Her saati değerlendirmesi gereken küçük ekipler için özellikle değerli ve müşterilerin 100.000’e kadar URL yönlendirmesini verimli biçimde eşleştirip tamamlamasına yardım ediyor.
Shopify’ın URL yönlendirmeleri için resmi bir destek belgesi var mı?
Evet, Shopify URL yönlendirmeleri için help.shopify.com adresinde resmi bir yardım belgesi tutuyor. Tekil ve toplu 301 yönlendirmeleri eklemeye dair genel yönergeler sunsa da bizim kılavuzumuz onu URL türleri ve platform sınırları hakkında ayrıntılı özelliklerle tamamlıyor.
Shopify’ın desteklemediği URL dizeleri hangileri?
Shopify’ın desteklemediği tek bir URL dizesi biçimi var: eşittir operatöründen sonra kodlanmamış noktalı virgül karakteri taşıyan dizeler (örneğin /page?param=;semicolon). Kodlanmış noktalı virgüller ve başka konumlardaki noktalı virgüller dahil diğer bütün URL biçimleri destekleniyor.
Shopify joker karakter veya regex kullanan yönlendirmeleri destekliyor mu?
Hayır, Shopify şu anda yerel yönlendirme sisteminde joker karakterli yönlendirmeleri veya regex kalıplarını desteklemiyor. Bu kısıt hem standart Shopify hem de Shopify Plus mağazaları için geçerli.
Joker karakterli yönlendirme nedir?
Joker karakterli yönlendirmeler, belirli bir kalıba uyan birden fazla URL’yi tek bir hedefe yönlendirmenizi sağlar. Örneğin /blog/* altındaki bütün URL’leri /articles/* adresine yönlendirmek gibi. Çok istenen bir özellik olsa da şu anda Shopify’ın yerel işlevselliğinde bulunmuyor.
Shopify yönlendirme zinciri oluşmasını engelleyebiliyor mu?
Evet, Shopify’ın yönlendirme zincirlerini önlemek için yerleşik korumaları var. Sistem, zaten başka bir yere yönlendirilen bir URL’ye yönlendirme oluşturmanıza izin vermiyor.
Yönlendirme zinciri nedir?
Yönlendirme zincirleri, URL’ler nihai hedefe ulaşmadan önce birden fazla adımdan geçtiğinde ortaya çıkar (örneğin A→B→C). Bu zincirler sayfa yüklemelerini yavaşlatabilir ve SEO performansını etkileyebilir. Shopify’ın sistemi bunları tasarım gereği önlemeye yardımcı olur.
Shopify’da URL yönlendirmesi oluşturmak ve güncellemek kolay mı?
Evet, Shopify iki basit yöntem sunuyor: arayüzünden tekil URL yönlendirmesi oluşturma ve CSV dosyasıyla toplu içe aktarma. Her iki yöntem de göreli ve mutlak URL yollarını destekliyor.
Shopify’da toplu URL yönlendirmeleri nasıl oluşturulur?
Toplu yönlendirmeler Shopify’ın CSV içe aktarma aracıyla oluşturulabilir. Hataları daha kolay kontrol edip yönetebilmek için 1.000’lik partiler hâlinde içe aktarmanızı öneriyoruz. İçe aktarma şablonuna buradan ulaşabilirsiniz.
Shopify’ın URL yönlendirme kayıtlarında azami bir sınırı var mı?
Evet. Standart Shopify planları 100.000 URL yönlendirmesiyle sınırlı, Shopify Plus mağazaları ise 20.000.000 yönlendirmeye kadar taşıyabiliyor. Bu sınırlar sabit ve artırılamıyor.
Shopify’ın yönlendirmelerde karakter sayısı sınırı var mı?
Evet, Shopify URL yönlendirme dizeleri için baştaki eğik çizgi (’/’) dahil 1.024 karakterlik bir sınır uyguluyor. Bu uzunluğu aşan URL’ler sistem tarafından kabul edilmiyor.
URL’lerin Shopify uyumluluğunu doğrulayan bir araç var mı?
Shopify resmi bir doğrulama aracı sunmasa da kapsamlı testlerimiz standart URL biçimlerinin %99’unun desteklendiğini gösterdi. Asıl dikkat edilmesi gereken, 1.024 karakter sınırı ve eşittir operatörlerinden sonra kodlanmamış noktalı virgüllerden kaçınmak.