String ifadeyi URL dostu formata dönüştürme
Başlık veya ürün adından slug üretirken Türkçe karakter, boşluk, noktalama ve kültür ayarlarına dikkat eden C#, JavaScript ve Python örnekleri.
Bir başlığı adres satırında kullanılabilir hâle getirmek (slug üretmek) göründüğünden zahmetlidir: Türkçe karakterler, boşluklar, noktalama ve art arda gelen tireler temizlenmelidir. Aşağıdaki işlev bunu tek seferde yapar.
İşlevin en kritik satırı küçültme adımıdır: ToLower çağrısına kültür bilgisi verilmezse sunucunun diline göre farklı sonuç üretir. Türkçede büyük I harfinin küçüğü noktasız ı harfidir; kültür belirtilmediğinde aynı başlık başka bir sunucuda başka bir slug üretir. Bu da aynı içeriğin iki ayrı adresten yayınlanması, yani arama motoru açısından kopya sayfa demektir.
Dikkat edilecekler
- Slug üretimi tek yerde olmalı: aynı işlev hem kaydederken hem bağlantı üretirken çağrılmalı.
- Üretilen slug'ın benzersizliği ayrıca kontrol edilmeli; aynı başlıktan iki kayıt varsa sona sayı eklenir.
- Yayınlanmış bir slug'ı sonradan değiştirirseniz eski adresten yenisine kalıcı yönlendirme (301) koymayı unutmayın.
public string urlFormat(string str)
{
if (string.IsNullOrWhiteSpace(str)) { return string.Empty; }
str = str.ToLower(new CultureInfo("tr-TR"));
str = str.Replace("ı", "i")
.Replace("ğ", "g")
.Replace("ü", "u")
.Replace("ş", "s")
.Replace("ö", "o")
.Replace("ç", "c");
str = Regex.Replace(str, @"[^a-z0-9- ]", "");
str = Regex.Replace(str, @"s+", " ");
str = str.Replace(" ", "-");
return str;
}
function urlFormat(str)
{
if (!str || !str.trim()) { return ''; }
str = str.toLowerCase();
str = str.replace(/ı/g, 'i')
.replace(/ğ/g, 'g')
.replace(/ü/g, 'u')
.replace(/ş/g, 's')
.replace(/ö/g, 'o')
.replace(/ç/g, 'c');
str = str.replace(/[^a-z0-9- ]/g, '');
str = str.replace(/\s+/g, ' ');
str = str.replace(/ /g, '-');
return str;
}
import re
def urlFormat(s):
if not s or s.isspace(): return ''
s = s.lower()
s = s.replace('ı', 'i')
.replace('ğ', 'g')
.replace('ü', 'u')
.replace('ş', 's')
.replace('ö', 'o')
.replace('ç', 'c')
s = re.sub(r'[^a-z0-9- ]', '', s)
s = re.sub(r's+', ' ', s)
s = s.replace(' ', '-')
return s
Kısa rehber
Ne zaman kullanılır?
URL dostu metin üretme; blog başlıkları, ürün sayfaları, kategori adresleri ve çok dilli içeriklerde gerekir. Okunabilir URL hem kullanıcı için daha anlaşılırdır hem arama motorunun sayfa konusunu daha kolay kavramasına yardım eder.
Dikkat edilecekler
- Türkçe karakter dönüşümlerini tutarlı yapın: ç, ğ, ı, ö, ş, ü harfleri her yerde aynı kurala uymalıdır.
- Aynı başlıktan iki kayıt gelirse çakışmayı önlemek için sonuna sayı veya kısa id ekleyin.
- URL değiştiyse eski adresten yenisine yönlendirme vermeyi unutmayın.
Sık yapılan hata
Başlığı her değiştiğinde URL'yi de otomatik değiştirmek eski bağlantıları kırabilir. Yayındaki sayfalarda slug değişikliği kontrollü yapılmalıdır.
Bu örnek nerede işe yarar?
Bu tür küçük yardımcı kodlar web yazılımı, mobil uygulama arka uçları, yönetim panelleri ve API projelerinde zaman kazandırır. Önemli olan örneği olduğu gibi kopyalamak değil, veri formatı, güvenlik ve performans beklentisine göre projeye uyarlamaktır.