Slug — web sahifa, maqola, kategoriya yoki boshqa resource nomini URL ichida o‘qilishi qulay va barqaror segment sifatida ifodalovchi qisqa matn. Slug odatda sarlavhadan yaratiladi va kichik harflar, harf-raqam hamda defisdan foydalanadi.
Masalan:
Sarlavha: Web dasturlash asoslari
Slug: web-dasturlash-asoslari
Slug resource’ning database primary keyi bo‘lishi shart emas. U ko‘pincha public URL identifikatori sifatida ishlatiladi.
URL ichidagi o‘rni
Slug odatda path segmentida joylashadi:
https://uzbekdevs.uz/wiki/web-dasturlash-asoslari
Bu yerda web-dasturlash-asoslari slug hisoblanadi.
Bir route ichida slug resource’ni topish uchun ishlatilishi mumkin.
Sarlavhadan yaratish
Slug generation jarayoni odatda:
- matnni lowercase qilish;
- Unicode yoki transliteration siyosatini qo‘llash;
- bo‘sh joylarni defisga almashtirish;
- ruxsat etilmagan belgilarni olib tashlash;
- takroriy defislarni birlashtirish;
- bosh va oxirgi defisni olib tashlash;
- uzunlikni cheklash
bosqichlaridan iborat.
Defis va underscore
SEO va o‘qish qulayligi uchun defis keng tarqalgan:
web-dasturlash
Underscore:
web_dasturlash
ham texnik jihatdan ishlashi mumkin, lekin loyiha bo‘ylab yagona convention saqlanadi.
Slug parser separatorni aniq belgilaydi.
Unicode slug
Slug faqat lotin harflaridan iborat bo‘lishi shart emas.
Unicode slug:
o‘zbekcha-maqola
ko‘rinishida bo‘lishi mumkin.
Browser URLni percent-encoded shaklda yuborishi ehtimoli bor.
Search engine va framework Unicode URLlarni qo‘llab-quvvatlaydi, lekin interoperability test qilinadi.
Transliteration
Ba’zi loyihalar kirill, arab yoki boshqa yozuvlarni lotinga transliteratsiya qiladi.
Bu:
- URLni qisqa qilish;
- copy-paste;
- eski tizimlar bilan moslik;
- analytics
uchun qulay bo‘lishi mumkin.
Transliteration bir xil matndan doim bir xil slug yaratishi kerak.
Unique slug
Bir xil sarlavha bir nechta resource’da uchrashi mumkin.
Unique qilish usullari:
django
django-2
django-3
yoki:
django-2026
django-a1b2
Database unique constraint race conditionni oldini oladi.
Faqat applicationda oldindan tekshirish yetarli emas.
Scope bo‘yicha uniqueness
Slug butun sayt bo‘yicha yoki ma’lum parent ichida unique bo‘lishi mumkin.
Masalan:
/wiki/cache
/blog/cache
ikki xil route’da bir xil slugga ruxsat berilishi mumkin.
Yoki kategoriya ichida:
/category-a/item
/category-b/item
scope database constraintda aks etadi.
Primary key bilan farqi
Primary key odatda ichki barqaror identifikator.
Slug esa human-readable public nom.
Sarlavha o‘zgarsa slug o‘zgarishi mumkin.
Resource relationshiplari slugga emas, ichki IDga bog‘lanishi ko‘pincha barqarorroq.
Immutable slug
Ayrim saytlar slugni yaratilgandan keyin o‘zgartirmaydi.
Afzalligi:
Sarlavha o‘zgarsa URL avvalgi matn bilan qolishi mumkin.
Mutable slug
Slug sarlavha bilan birga yangilanishi mumkin.
Bunda eski URLdan yangi URLga redirect yaratiladi.
Redirect history yoki oldingi sluglar jadvali saqlanadi.
Aks holda external linklar 404ga tushadi.
Redirect
Slug o‘zgarganda odatda permanent redirect ishlatiladi:
/eski-slug → /yangi-slug
Redirect loop va chainlar tozalanadi.
Eski slug keyinchalik boshqa resource’ga berilsa chalkashlik yuzaga kelishi mumkin.
Reserved slug
Ayrim pathlar application uchun maxsus:
admin;api;login;static;new;edit;settings.
User generated slug shu nomlarga teng bo‘lsa route conflict yuz beradi.
Reserved ro‘yxat validationda tekshiriladi.
Uzunlik
Juda uzun sarlavhani to‘liq slugga aylantirish URLni noqulay qiladi.
Slug ma’lum belgilar sonida kesilishi mumkin.
Kesish:
- so‘z chegarasi;
- unique suffix;
- Unicode normalization
bilan bajariladi.
Faqat byte bo‘yicha kesish UTF-8 belgini buzishi mumkin.
Stop word
Ba’zi generatorlar “va”, “uchun”, “bilan” kabi stop wordlarni olib tashlaydi.
Bu slugni qisqartiradi.
Biroq avtomatik olib tashlash ma’noni o‘zgartirishi mumkin.
Qoidalar tilga mos va deterministik bo‘ladi.
SEO
Slug sahifa mavzusini tushunarli ko‘rsatishi mumkin.
Yaxshi slug:
- qisqa;
- mazmunli;
- o‘qiladigan;
- keraksiz ID va parameterlarsiz;
- barqaror.
Slugning o‘zi rankingni kafolatlamaydi.
Content, title, link va technical SEO muhimroq.
Security
Slug user inputidan yaratilsa:
- path traversal;
- encoded slash;
.va..;- control character;
- reserved URL;
- Unicode homograph;
- juda uzun input
tekshiriladi.
Routingdan oldin decode va normalization qoidalari aniq bo‘ladi.
Case sensitivity
URL path serverga qarab case-sensitive bo‘lishi mumkin.
Django va django ikki routega aylanishi ehtimoli bor.
Slug odatda lowercase qilinadi va canonical URLga redirect beriladi.
Duplicate content kamayadi.
Lokalizatsiya
Bir maqola bir nechta tilda bo‘lsa har til uchun boshqa slug berilishi mumkin:
/uz/wiki/tarmoq
/en/wiki/network
Resource ichki ID bilan bir xil qoladi. Til almashtirish linki mos translated resource’ga olib boradi. Tarjima hali mavjud bo‘lmasa qaysi fallback ishlashi aniq belgilanadi.
Slug tarixi
Oldingi sluglar alohida jadvalda saqlansa external link va bookmarklar ishlashda davom etadi. Redirect target har doim joriy canonical slugga olib boradi. Eski slugni boshqa maqolaga qayta biriktirish collision va noto‘g‘ri redirect yaratishi mumkin.
Database qidiruvi
Slug bo‘yicha tez lookup uchun index yaratiladi. Multi-tenant yoki kategoriya scope’i bo‘lsa composite unique index ishlatiladi.
Manual slug
Editor avtomatik yaratilgan slugni publishdan oldin o‘zgartirishi mumkin. Validation va unique constraint manual qiymatga ham bir xil qo‘llanadi.
Bog‘liq tushunchalar
Slug, URL, Path segment, Permalink, Canonical URL, Redirect, Transliteration, Unicode, SEO, Routing, Unique constraint