İçeriğe geç

URL takma adları ve yol desenleri

Bir içeriğin gerçek adresi onun slug'ıdır ve asla değişmez. /blog/2026/merhaba-dunya gibi okunaklı, kategori ya da tarih içeren adresler ise takma ad (alias) olarak üretilir. Bu ayrım bilinçlidir: takma ad bir yönlendirme katmanıdır, içeriğin kimliği değil.

Bileşenler

Parça Görevi
UrlAlias kaydı Bir yolu (ve dili) bir içeriğe bağlar
PathAliasPattern Bir içerik türü için yol deseni (/blog/[node:created:Y]/[node:title])
PathAliasGenerator Deseni içeriğe uygular, benzersiz bir yol bulur, takma adı yazar
UrlAliasListener Hiçbir rota eşleşmeyen isteği takma ad tablosunda arar ve kanonik adrese 301 verir

Desenler Yapı → Yol desenleri ekranından yönetilir. Her desen bir içerik türüne (bundle) bağlıdır, açılıp kapatılabilir ve yapılandırma dosyası olarak dışa aktarılır:

# cp-content/config/sync/path_pattern.post.yaml
pattern: '/blog/[node:created:Y]/[node:title]'
enabled: true

Bir yol nasıl üretilir

  1. Desen, token değiştirici ile çözülür: [node:title], [node:created:Y], [node:category], [node:author]…
  2. Çıkan metin / ile bölünür ve her parça ayrı ayrı URL biçimine çevrilir (küçük harf, Türkçe karakterler ASCII'ye). "Merhaba Dünya!" → merhaba-dunya; sabit parçalar (blog) olduğu gibi kalır.
  3. Boş kalan parçalar atılır. Kategorisi olmayan bir içerikte [node:category] çift eğik çizgi bırakmaz, sessizce kaybolur.
  4. Yol o dilde zaten başka bir içerikte varsa sona -2, -3 eklenir.
  5. Aynı içerik için aynı yol zaten kayıtlıysa hiçbir şey yazılmaz: işlem idempotenttir.

Eski adresler neden 404 vermez

Başlığı değiştirdiğinizde yeni bir takma ad üretilir, eskisi silinmez. Her takma ad, istek anında içeriğin güncel slug'ına çözülür. Sonuç: eski adres sonsuza dek yeni adrese 301 yönlendirir; Drupal'in Pathauto'sundaki "alias değişti, eski adres 404" tuzağı için ayrı bir yönlendirme modülü gerekmez.

Static rotalar kazanır

UrlAliasListener, kernel.exception olayını dinler, yani yalnızca hiçbir rotanın eşleşmediği (404 olacak) isteklerde devreye girer. Modüllerin kendi rotaları (/forum, /docs) takma adlarla gölgelenemez.

Mevcut içerik için toplu üretim

Desen eklemek eski içeriği otomatik güzelleştirmez. Yol desenleri ekranındaki yeniden üret düğmesi, desenin türündeki tüm içerik için takma ad üretir. Zorunlu değildir: eski bağlantılar zaten slug ile çalışmaya devam eder, bu yalnızca kolaylıktır.

Modülünüz için

  • İçerik türünüz bir Node ise desen sistemine otomatik dahil olur; ayrı kod gerekmez.
  • Kendi token türünüzü eklemek için TokenValueProviderInterface uygulayıp cp.token_value_provider etiketiyle bağlayın (Genişletme noktaları).
  • Kendi rotalarınız için takma ad kullanmayın; #[Route] zaten kesindir.

Sık hatalar

  • Desenin sonuna slug yazmak: slug zaten başlıktan gelir; [node:title] yeterlidir.
  • Aynı yolu iki dilde beklemek: benzersizlik (yol, dil) çiftinedir; farklı dillerde aynı yol olabilir.
  • Deseni silince adreslerin gideceğini sanmak: silinen desen yeni takma ad üretmeyi durdurur; var olanlar çalışmaya devam eder.
Son güncelleme: 13.10.2026