url'de slug + uuid kullanımı
merhaba arkadaşlar.
envato elements, amazon gibi sitelerde url yapısının mantığını anlamama yardımcı olabilir misiniz?
örnek:
elements.envato.com/nody-react-react-js-landing-page-template-N2JTWYQ
amazon.com.tr/Caspar-David-Friedrich-Bulutların-Üzerinde/dp/B07BSJ8HRB
her iki sitede de domainden sonra gelen slug kısmı benzersiz bir id ile bitiyor. geçerli bir id ile değiştirdiğinizde ortadaki slug kısmını es geçip ilgili sayfaya gidiyor.
buradaki id kısmı amazonda asin olarak geçiyor. milyonlarca ürün için bu asin kısmının benzersiz oluşturulduğunu nasıl kontrol edebiliyorlar. ikinci sorum ise bu kısım değiştiğinde slug önemini yitirip doğru url'e nasıl yönlendiriyorlar.
react ile bu url yapısını kullanmak istiyorum, nasıl bir yol izlemeliyim?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
@devepdogukan çok teşekkürler. sorumun ikinci kısmını çok güzel açıklamışsınız.
ilk kısım için bir yorumunuz var mı? envato elements milyonlarca içeriği veritabanına kaydedersekn N2JTWYQ şeklinde random bir id kullanıyor olamaz.
içerik id'lerimi nasıl bu şekilde benzersiz oluşturup takip edebilirim?
php ile preg_match kullanarak örnekteki gibi oluşturuyorum fakat db kaydederken her içerik için benzersiz olup olmadığını kontrol etmek saçma geliyor.
function myUUID($string){
$ptn = "/ID-[0-9]{2}[0-9A-Z]{7}|[0-9]{9}(X|0-9])/";
return preg_match($ptn, $string, $matches) === 1;
}
Envato'nun urlsini baz alarak anlatacağım çünkü bende öyle bir yapı kullanıyorum.
const url = "nody-react-react-js-landing-page-template-N2JTWYQ"
const urlToArr = url.split("-")
const id = urlToArr.at(-1)
const slug = urlToArr.slice(0,-1).join("-")
const product = await fetch(id) //Burada id'e göre ürünü getirdik
if([product.slug,product.id].join("-") !== url){
// Eğer bu koşula giriyorsa kullanıcı yanlış slugda
navigate([product.slug,product.id].join("-")) // olması istenilen url'e kullanıcıyı yönlendirdik
}
// Burada ise slug ve id doğru kısımdadır demektir , işlemlerine devam edebilirsin
Yukarıda verdiğim örnekte değişken isimleri vs kendine göre düzenlemen gerek. Mantığını anlatmaya çalıştım