v2.5.2
Giriş yap

url'de slug + uuid kullanımı

mimra
246 defa görüntülendi

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?

Cevap yaz
Cevaplar (3)
mimra
520 gün önce

@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?

mimra
520 gün önce

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;
}
devepdogukan
520 gün önce

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