7 dakikalık okumaMühendislik

Maksimum URL Uzunluğu: Gerçek Dünyadaki Karakter Sınırı

Spesifikasyonda maksimum bir URL uzunluğu yoktur. Gerçek tavan, bağlantınızın geçtiği zincirdeki en düşük sınırdır: tarayıcı, sunucu, gelen kutusu veya QR kod.

Marius Voß
DevRel · edge infra
Bir bağlantının içinden geçtiği, her birinin kendi tavanı olan dört sistem olarak gösterilen maksimum URL uzunluğu; tarayıcı çubuğu dördü arasında en az kısıtlayıcı olanı

Maksimum bir URL uzunluğu yoktur. URI sözdizimini tanımlayan standart olan RFC 3986 hiçbir zaman bir tane belirlemez - hangi karakterlerin yasal olduğunu ve bir URL'nin nasıl bir araya getirildiğini tarif eder ve orada durur. Gerçekte karşılaştığınız şey, birbiriyle ilişkisiz, ayrı bir sınırlar zinciridir: tarayıcınızın adres çubuğu, diğer uçtaki web sunucusu, aralarında oturan proxy, birinin bağlantınızı açtığı e-posta istemcisi veya basmak üzere olduğunuz QR kod. Her biri kendi tavanını uygular ve bir URL'nin gerçek maksimum uzunluğu, hangi tavan en düşükse odur. 3.000 karakterlik bir URL gönderin; Chrome'da düzgün görünebilir, varsayılan ayarlarda bir sunucu tarafından reddedilebilir ve Outlook'a dört satıra sarılmış olarak ulaşabilir. Bunların hiçbiri bir hata değildir. Bu, mesele üzerinde kasıtlı olarak sessiz kalan bir spesifikasyonun pratik sonucudur.

Bundan dört şey çıkar: standardın söylediği ve söylemediği şey, ünlü 2.083 karakter sayısının nereden geldiği ve önemini yitirmesinin üzerinden yıllar geçtikten sonra bile kontrol listelerinde neden hâlâ ortaya çıktığı, bir bağlantı tarayıcıdan çıktıktan sonra gerçekten ısıran sınırlar ve çok uzamış bir URL hakkında ne yapılacağı. Bir kısaltıcının tüm bunlarla hat üzerinde ne yaptığı için URL kısaltıcılar nasıl çalışır yazısına bakın.

RFC 3986 Aslında URL Uzunluğu Hakkında Ne Söylüyor

RFC 3986, URI'ler için genel sözdizimini - şema, yetki (authority), yol, sorgu, parça (fragment) - tanımlar ve bunlardan herhangi birinin ne kadar uzayabileceği konusunda sessizdir. Unutkanlıktan sessiz değil; tasarım gereği sessiz. Bölüm 3'teki dilbilgisi, bir URI'yi küçük bir üretim kuralları kümesinden inşa eder ve bu kurallarda hiçbir şey bir kuralın kaç kez tekrarlanabileceğine bir tavan koymaz. Sözdizimi açısından bir yol segmenti bir karakter de olabilir yüz bin de. Uzun URL'ler tamamen yasal URL'lerdir.

RFC'nin gerçekten koyduğu tek sınır dolaylıdır: bir URL'nin yetki bileşeni bir ana bilgisayar adı içerir ve DNS, tam nitelikli bir ana bilgisayar adını URI dilbilgisinin izin verdiğinin oldukça altında sınırlar - Chromium'un mühendislik belgeleri bu tavanı toplamda 253 karakter, etiket başına 63 karakter olarak koyar. Yol, sorgu dizesi ve parça, standardın hiçbir yerinde böyle bir kısıtlama taşımaz.

Spesifikasyon tarafından hikayenin tamamı bu. Pratikte gerçekten çarptığınız URL karakter sınırı, URL'yi okuyan yazılımdan gelir, hiçbir zaman URL biçiminin kendisinden değil.

2.083 Nereden Geldi ve Tarayıcılar Şimdi Ne Yapıyor

Bir yerde bir URL uzunluğu yönergesi gördüyseniz, 2.083 karakteri işaret ediyordu. Bu sayı gerçek ama tek bir tarayıcıya, tek bir döneme ve tek bir kod yoluna ait. Internet Explorer'ın WinINET ağ kütüphanesi INTERNET_MAX_URL_LENGTH'i 2083 karakter olarak tanımladı ve Microsoft'un sınır üzerine kendi mühendislik yazısı, adres çubuğunun kendisinin bir karakter daha düşükten, 2047'den sınırlandığını belirtir. Bu tavan on yılı aşkın bir süre boyunca web trafiğinin büyük bir payını yönetti, bu yüzden herkesin tasarladığı sayı haline geldi ve alışkanlık, tanımladığı tarayıcıdan daha uzun yaşadı.

Modern tarayıcılar böyle çalışmaz. Chrome'un belgeleri, bir UI alanını korumak için değil süreçler arası iletişim sorunlarını önlemek için uygulanan dahili bir 2 megabayt sınırı olduğunu belirtir; çok daha küçük bir sabit, masaüstünde yaklaşık 32 kilobayt, omnibox'ın gerçekte göstereceği şeyi sınırlar. Firefox ve Safari de benzer şekilde cömerttir - hiçbiri, elle oluşturmanız muhtemel uzunluğa yakın bir URL'de tıkanmaz. Modern bir tarayıcının uzun bir URL'yi reddetmesinden kaynaklanan gerçek bir üretim sorununu hiçbir zaman hata ayıklamadım. İzlediğim her uzun URL hatası tarayıcının aşağısında başladı.

Pratikte Isıran Gerçek Dünya Sınırları

Bir URL'nin gittiği dört yer - tarayıcı adres çubuğu, sunucu istek satırı, e-posta istemcisi ve QR kod - her biri aşıldığında pratik karakter tavanı ve belirtisiyle birlikte

Bir URL'nin gerçekte nereye gittiğini sıraya koyun, bir örüntü hızla ortaya çıkar: en sıkı sınır nadiren tarayıcıdaki sınırdır.

  • Sunucu istek satırı, URL'yi bir HTTP isteğinin ilk satırının bir parçası olarak okur ve bu satırın kendi tampon belleği vardır. Onu aşın ve sunucu rotanızı asla ayrıştırmaz - uygulama kodunuz hiç çalışmadan bağlantıyı reddeder.
  • E-posta istemcileri taşmayı farklı şekilde ele alır. Outlook, uzun bir düz metin URL'yi kısaltmak yerine birkaç satıra sarar; bu çirkin ama yine de tıklanabilirdir; bazı webmail istemcileri ve yönlendirme ağ geçitleri daha az hoşgörülüdür ve bağlantıyı doğrudan keser.
  • Bir metin mesajının içindeki bir bağlantı, aynı karakter bütçesi için mesaj gövdesiyle yarışır ve SMS pazarlama bağlantıları 160 karakterlik bir segment içinde yaşar - tek başına uzun bir URL, tek segmentlik bir metni ikiye itebilir ve operatörler bunu farklı şekilde faturalandırır ve filtreler.
  • Bir QR kod uzun bir URL'yi kısaltmaz; yalnızca daha yoğunlaşır. Bir QR kodun ne kadar büyük olması gerektiği doğrudan onu kodlamasını istediğiniz miktara bağlıdır ve takip parametreleriyle yüklü bir URL, kodu bir veya iki versiyon yukarı itebilir ve bu da hâlâ tarayabileceği mesafeyi daraltır.
  • Elektronik tablo köprü fonksiyonları, bağlantı argümanı üzerinde tipik bir etiketlenmiş URL'nin oldukça altında kendi katı karakter sınırlarını uygular ve bunu aşan bir bağlantı sessizce başarısız olur - hücre düzgün görünür, bağlantının kendisi çalışmaz.
  • Reklam platformları, hedef URL alanını kendi seçtikleri sabit bir uzunlukta sınırlar; bu teknik değil platform kuralıdır ve bir kampanya yöneticisi bunu ancak kaydet düğmesi, bir tarayıcının şikayetsizce açacağı şeyi reddettiğinde öğrenir.

Bu sınırların hiçbiri birbiriyle konuşmaz. Bir URL sunucunuzun istek satırını geçebilir ve yine de üç departman sonra bir elektronik tabloda ölebilir.

Sunucu ve Proxy İstek Satırı Sınırları

Sunucu durumu kendi başına bir bakışı hak ediyor, çünkü kozmetik bir aksaklık yerine gerçek bir hata kodu üreten durum bu. 414 Request-URI Too Long, bir sunucunun, URI'yi yorumlamaya istekli olduğundan daha uzun olduğu için bir isteği işlemeyi reddettiğinde gönderdiği yanıttır - o saniye istek satırını okuyan hangi yazılımsa onun tarafından, seferde bir sıçrama uygulanan bir URL boyut sınırı.

Zincirdeki her sunucu ve proxy bunun kendi versiyonunu uygular. Apache'nin LimitRequestLine yönergesi, yalnızca URL'nin kendisini değil yöntemi ve protokol sürümünü de içeren, tüm istek satırı için varsayılan olarak 8.190 bayttır. nginx, istek başlıklarını large_client_header_buffers tarafından kontrol edilen, varsayılan olarak 8 kilobayt olan sabit bir tampona okur ve sığmayan bir istek satırı, rotanız hiç eşleşmeden bir 414 alır. Her ikisinin önündeki yük dengeleyiciler ve CDN'ler genellikle üçüncü, ayrı bir sınır uygular, bu yüzden bir URL kaynak sunucunuzun ayarını geçebilir ve yine de bir sıçrama önce reddedilebilir.

Her sıçramayı kontrol etmiyorsanız - ve belirli bir şirket büyüklüğünden sonra kimse etmez - güvenli hamle, bir yapılandırma dosyasında bulduğunuz en cömert varsayılan yerine en sıkı ortak varsayılana göre tasarlamaktır.

İstek ayrıştırmayı elle yazmak yerine yönlendirme katmanını kendiniz kurmak buradaki sıkıcı çözümdür. Elido'nun API'si makul herhangi bir uzunluktaki bir hedefi kabul eder ve boyutu hiç değişmeyen bir kısa bağlantı döndürür, böylece bir sunucunun istek satırı tavanı, her entegrasyonun kendi başına ele almak zorunda olduğu bir şey yerine kenarda (edge) bir kez yapılandırdığınız bir şey haline gelir.

Bir URL'yi Göndermeden Önce Gerçek Uzunluğunu Nasıl Ölçersiniz

Karakter sayısı ölçümün tamamıdır ve bir geri dönüş raporu geldikten sonra değil, bir URL bir kampanyaya girmeden önce kontrol etmeye değer.

printf '%s' "https://example.com/path?utm_source=newsletter&utm_campaign=spring-sale-2026" | wc -c

Bu size URL'nin tam olarak yazıldığı şekliyle bayt uzunluğunu verir. İki şey bunu karmaşıklaştırır. Birincisi, yüzde kodlanmış karakterler göründüğünden daha fazlaya mal olur: bir sorgu değerinin içindeki aksanlı bir harf veya bir emoji, kodlandığında altı karaktere veya daha fazlasına genişleyebilir, bu yüzden URL'yi kodlamadan önce değil kodlamadan sonra ölçün. İkincisi, UTM parametreleri genellikle bir URL'nin en hızlı büyüyen kısmıdır - bir avuç kampanya, kaynak, mecra ve içerik etiketi, kısa bir yol olarak başlayan şeye birkaç yüz karakter ekleyebilir ve bir URL sessizce çok uzadığında bakılacak ilk yer bunlardır.

Eskiden çalışan bir bağlantı aniden çalışmıyorsa, herhangi bir ölü bağlantı için kullanacağınız aynı izlemeyi çalıştırın: kısa bağlantı çalışmıyor hedefi doğrudan kontrol etmeyi adım adım anlatır ve bu, bir seferde bir takip parametresiyle bir sunucunun sınırını aşan bir URL'yi tam olarak nasıl yakalayacağınızdır.

Bir URL Çok Uzun Olduğunda Ne Yapmalı

Uzun, etiketlenmiş bir URL, bir kısaltıcı tarafından sunucu tarafında saklanan parametreleri ve onun yerine seyahat eden kısa bağlantı

Gerçekten işe yarayan iki çözüm var ve hangi sınıra takıldığınızdan bağımsız olarak bunlar aynı iki çözüm.

Birincisi URL'yi kısaltmaktır. Bir kısa bağlantı, sabit uzunlukta bir işaretçidir - hedef veya onun takip parametreleri ne kadar büyürse büyüsün slug aynı uzunlukta kalır, çünkü tüm bunlar sunucu tarafında yaşar ve bağlantının kendisinin içinde taşınmak yerine her tıklamada aranır. Bu, QR kod yoğunluğu sorununu, SMS segment sorununu ve elektronik tablo sorununu tek bir hamlede çözer, çünkü üçü de bağlantının sonunda nereye işaret ettiğinin uzunluğunu değil, bağlantının karakter sayısını önemser.

İkincisi durumu (state) sorgu dizesinden tamamen çıkarmaktır. URL'nizi uzatan şey gerçek takip parametreleri değil de oturum verisi, bir sepet içeriği blobu veya uzun bir filtre listesiyse, bu veri genellikle adres çubuğunda tek tek yazılmak yerine sunucu tarafında opak bir kimliğin arkasında yaşamalıdır. /checkout?session=a1b2c3d4 diye okunan bir URL, her SKU ve miktarın tam olarak yazıldığı /checkout?items=... diye okunan bir URL'den daha iyi yaşlanır ve bu makaledeki her sınırı bir kerede aşar, çünkü ölçülecek uzun bir şey kalmaz.

Her iki çözüm de aynı yönü işaret eder: bir URL'nin uzunluğunu, üzerinde kaç parametrenin biriktiğinin bir kazası olarak değil, bir tasarım kararı olarak ele alın.

Temel Taşı Serisini Okuyun

Bu yazı mühendislik kümesinde yer alır. Bir kısa bağlantının diğer ucunda ne olduğu için, URL kısaltıcılar nasıl çalışır aramanın kendisini kapsar ve yönlendirme türleri hedef bulunduktan sonra devreye giren durum kodlarını kapsar.

Blogda İlgili Yazılar

Sıkça sorulan sorular

Bir URL'nin maksimum uzunluğu nedir?

Web'in kendi standardı tarafından tanımlanmış bir tanesi yok. RFC 3986, bir URL için sözdizimini belirler ama uzunluğuna asla bir tavan koymaz, bu yüzden gerçek tavan, zincirdeki en sıkı sınırı uygulayan hangi sistemse odur: bir tarayıcı, bir sunucu, bir e-posta istemcisi veya bir QR kod. Bir URL'yi kabaca 2.000 karakterin altında tutmak bu sistemlerin neredeyse tamamını aynı anda geçer, bu yüzden hiçbir tek spesifikasyon bunu gerektirmese de bu sayı güvenli bir hedef olarak ortaya çıkmaya devam eder.

İnsanlar neden bir URL'nin yalnızca 2.083 karakter olabileceğini söylüyor?

Bu sayı, INTERNET_MAX_URL_LENGTH'i 2083 karakter olarak tanımlayan Internet Explorer'ın WinINET ağ kütüphanesinden gelir; tarayıcının kendi adres çubuğu ise bir karakter daha düşükten, 2047'den sınırlandırılmıştı. Yıllarca web trafiğinin büyük bir payını yönetti, bu yüzden varsayılan güvenli kabul haline geldi ve onu tekrar etme alışkanlığı, tanımladığı tarayıcıdan daha uzun yaşadı.

Chrome ve diğer modern tarayıcılarda maksimum URL uzunluğu nedir?

Chrome'un kendi belgeleri, adres çubuğunu korumak için değil süreçler arası iletişim sorunlarını önlemek için belirlenmiş, dahili bir 2 megabayt sınırı olduğunu belirtir ve ayrı bir sabit, omnibox'ın gerçekte göstereceği şeyi, masaüstü platformlarında yaklaşık 32 kilobayt olarak sınırlar. Firefox ve Safari de benzer şekilde müsamahakârdır. Pratikte, hiçbir güncel tarayıcı ilk çarpacağınız sınır değildir.

Bir URL çok uzunsa ne olur?

Başarısızlık tamamen hangi sistemin onu reddettiğine bağlıdır. Bir sunucu veya proxy tipik olarak bir 414 Request-URI Too Long yanıtı döndürür ve uygulama kodunuzu asla çalıştırmaz; bir e-posta istemcisi bağlantıyı satırlar boyunca sarar veya kısaltır; bir QR kod yalnızca daha yoğunlaşır ve uzaktan taranması zorlaşır; bir elektronik tablo hücresi düzgün görünebilirken altındaki bağlantı sessizce çalışmayı durdurabilir.

SEO için bir URL ne kadar uzun olmalı?

Uzunluk tek başına bir sıralama faktörü değildir, ama gereksiz parametrelerle yüklü bir URL genellikle arama motorlarının gerçekten önemsediği bir şeyin, yinelenen içerik veya belirsiz site yapısı gibi, bir belirtisidir. Pratikte, URL'leri 2.000 karakterin oldukça altında tutmak yukarıdaki uyumluluk sorunlarından kaçınır ve yolu kısa ve açıklayıcı tutmak, bir SEO kararından çok bir kullanılabilirlik kararıdır.

Bir URL'nin ne kadar uzun olduğunu nasıl kontrol edebilirim?

Kodlamadan önce değil kodlamadan sonra karakterleri sayın, çünkü düz ASCII dışındaki her şey yüzde kodlandığında genişler. Tek satırlık bir terminal komutu olan printf '%s' "your-url" | wc -c, sunucunuzun, e-posta istemcinizin veya QR kod oluşturucunuzun göreceğiyle aynı sayı olan, göndermek üzere olduğunuz tam bayt uzunluğunu size verir.

Elido'yu deneyin

Bir URL yapıştırın, çalışan bir kısa bağlantı alın

Kayıt gerekmez. Bağlantı 30 gün boyunca yaşar. Sonsuza kadar saklamak için kaydolun.

Ücretsiz, kayıt gerekmez · Günde 2

Elido'yu deneyin

Özel alan adları, derinlemesine analitik ve açık bir API'ye sahip AB'de barındırılan URL kısaltıcı. Ücretsiz katman - kredi kartı gerekmez.

Etiketler
maximum url length
max url length
url character limit
url size limit
long urls
how long can a url be

Okumaya devam et