URL'ler neden büyük / küçük harf duyarlıdır?


54

Sorum şu: URL'ler ilk tasarlandığında neden büyük / küçük harfe duyarlılık bir özellik haline getirildi? Bunu sordum, çünkü bana (yani, bir uzmana), gereksiz hataları önlemek ve zaten karmaşık bir metin dizisini basitleştirmek için büyük / küçük harfe duyarsızlığın tercih edileceği düşünülüyor.

Ayrıca, büyük / küçük harfe duyarlı bir URL’ye sahip olmanın gerçek bir amacı / avantajı var mı (büyük harf kullanımı olursa olsun, aynı sayfaya işaret eden URL’lerin büyük çoğunluğunun aksine)?

Vikipedi, örneğin, harf büyüklüğüne duyarlı bir web sitesidir (ilk karakter hariç):

https://en.wikipedia.org/wiki/St Bir ck_Exchange DOA'dır .


11
Belli ki Windows'ta IIS çalıştırmıyorsunuz
John Conde

53
İtscrap.com, uzman değiş tokuş ve whorepresents.com'un daha fazla kişinin büyük küçük harf duyarlı isimler kullanmasını tercih edeceğini tahmin ediyorum. Daha fazla bilgi için bkz. Boredpanda.com/worst-domain-names .
Eric Towers

22
URL'ler, Unix sistemlerinde oluşturulan dinozorlar Dünya'yı dolaştığında tasarlandı ve Unix büyük / küçük harfe duyarlıydı.
Thorbjørn Ravn Andersen

11
Wikipedia, konu başlığı için doğru büyük harf kullanmaya çalışır ve ortak farklar için yönlendirmeler kullanır. Örneğin. html, htmVe Htmltüm yönlendirme HTML. Ancak daha da önemlisi, muazzam konu yüzünden, URL’nin sadece duruma göre farklılık gösterdiği birden fazla sayfa olması mümkündür. Örneğin: Lateks ve LaTeX
MrWhite

7
@ edc65 Ancak Kobi , URL'nin bazı bölümlerinin (özellikle yolun ) büyük / küçük harf duyarlı olduğunu, yani bu URL'yi (bir bütün olarak) büyük / küçük harf duyarlı yapmaz mı?
MrWhite

Yanıtlar:


8

URL neden büyük / küçük harf duyarlı olmasın?

Provokatif (ve "şeytanın savunucusu") bir retorik sorusu gibi görünebileceğini biliyorum, ama düşünmenin faydası olduğunu düşünüyorum. HTTP'nin tasarımı, genellikle "web tarayıcısı" olarak adlandırdığımız "istemci" nin, veri için "web sunucusu" nu istediğidir.

Yayımlanan birçok, birçok farklı web sunucusu var. Microsoft, Windows Server işletim sistemleriyle (ve Windows XP Professional dahil olmak üzere diğerleri) IIS'yi yayımladı. Unix, OpenBSD'nin dahili httpd'si veya thttpd veya lighttpd gibi daha küçük tekliflerden bahsetmeksizin nginx ve Apache gibi ağır ağırlıklara sahiptir. Ek olarak, ağ özellikli cihazların çoğu, yönlendiriciler (özellikle Wi-Fi erişim noktaları ve DSL modemleri dahil) ve diğer yazıcılar gibi diğer aygıtlar dahil olmak üzere, aygıtı yapılandırmak için kullanılabilen yerleşik web sunucularına sahiptir. Ağ bağlantısı olan UPS'ler (akü destekli kesintisiz güç kaynağı üniteleri).

Öyleyse, "URL’ler neden büyük / küçük harf duyarlıdır?" Sorusu soruyor, "Web sunucuları neden URL’yi büyük / küçük harf duyarlı olarak değerlendirir?" Ve gerçek cevap şudur: hepsi bunu yapmaz. Oldukça popüler olan en az bir web sunucusu genellikle büyük / küçük harfe duyarlı değildir. (Web sunucusu IIS'dir.)

Farklı web sunucuları arasındaki farklı davranışların kilit nedeni muhtemelen basitlik sorunudur. Bir web sunucusu yapmanın basit yolu, bilgisayarın / aygıtın işletim sisteminin dosyaları nasıl bulduğuyla aynı şeyleri yapmaktır. Çoğu zaman, web sunucuları bir cevap vermek için bir dosya bulur. Unix, daha yüksek uçlu bilgisayarların etrafında tasarlandı ve bu nedenle Unix, büyük ve küçük harflere izin vermek için istenen işlevselliği sağladı. Unix, büyük ve küçük harfleri farklı olarak ele almaya karar verdi, çünkü farklılar. Bu yapılacak basit ve doğal bir şey. Windows, önceden oluşturulmuş yazılımı destekleme arzusu nedeniyle büyük / küçük harf duyarlı olma geçmişine sahiptir ve bu tarih küçük harfleri desteklemeyen DOS'a geri döner, muhtemelen daha az bellek kullanan daha az güçlü bilgisayarlara sahip olanları basitleştirmek için. Bu işletim sistemleri farklı olduğu için, sonuç basitçe tasarlanmış (erken sürümlerde) web sunucularının aynı farklılıkları yansıtmasıdır.

Şimdi, tüm bu arkaplanla ilgili olarak, belirli soruların bazı özel cevapları:

URL'ler ilk kez tasarlandığında, büyük küçük harf duyarlılığı neden bir özellik haline getirildi?

Neden olmasın? Tüm standart web sunucuları büyük / küçük harf duyarlı değildir, bu, web sunucularının standart tarafından belirtilen bir dizi kurala uyduğunu gösterir. Bu davanın göz ardı edilmesi gerektiğini söyleyen hiçbir kural yoktu. Kural olmamasının nedeni, böyle bir kuralın olmasının hiçbir sebebi olmamasıdır. Gereksiz kuralları telafi etmek için neden uğraşasınız?

Bunu sordum, çünkü bana (yani, bir uzmana), gereksiz hataları önlemek ve zaten karmaşık bir metin dizisini basitleştirmek için büyük / küçük harfe duyarsızlığın tercih edileceği düşünülüyor.

URL'ler, makinelerin işlemesi için tasarlanmıştır. Bir kişi bir adres çubuğuna tam bir URL girebilse de, bu amaçlanan tasarımın büyük bir parçası değildi. Amaçlanan tasarım, insanların ("klik") köprülerini takip etmesidir. Ortalama meslekten olmayanlar bunu yapıyorsa, görünmez URL'nin basit veya karmaşık olup olmadığıyla gerçekten ilgilenmiyorlar.

Ayrıca, büyük / küçük harfe duyarlı bir URL’ye sahip olmanın gerçek bir amacı / avantajı var mı (büyük harf kullanımı olursa olsun, aynı sayfaya işaret eden URL’lerin büyük çoğunluğunun aksine)?

William Hay'ın cevabının beşinci noktası, bir teknik avantajdan bahsetmektedir: URL'ler, bir web tarayıcısının bir web sunucusuna biraz bilgi göndermesi için etkili bir yol olabilir ve daha az kısıtlama varsa daha fazla bilgi dahil edilebilir; kısıtlama, ne kadar bilginin dahil edilebileceğini azaltır.

Bununla birlikte, çoğu durumda, büyük olasılıkla IIS'nin genellikle bununla uğraşmadığı kanıtlanmış olan, büyük / küçük harfe duyarlılığa büyük bir yararı yoktur.

Özetle, en ilgi çekici neden, web sunucusu yazılımını tasarlayanlar için, özellikle de Unix gibi büyük küçük harf duyarlı bir platformda basitlik olabilir. (HTTP, Unix'in HTTP'den çok daha büyük olması nedeniyle, Unix'in orijinal tasarımını etkileyen bir şey değildi).


"Farklı web tarayıcıları arasındaki farklı davranışların kilit nedeni muhtemelen basitlik sorunudur." - Sanırım burada ve başka yerlerde "web tarayıcıları" yerine "web sunucuları" mı demek istiyorsunuz?
MrWhite

2
Güncellenmiş. Her "tarayıcı" vakası incelendi ve birden fazla değişiklik yapıldı. Bunu vurguladığınız için teşekkür ederiz, böylece bazı kaliteleriniz iyileştirilebilir.
TOOGAM

1
Aldığım birkaç mükemmel tarihsel teknik değişen, soruma cevap. Tahıl aleyhine geçip daha düşük puanlı bir cevabı kabul etmekte tereddüt ediyorum, ama @ TOOGAM'ın cevabı bana çok yardımcı oldu. Bu cevap kapsamlı ve kapsamlıdır, ancak kavramı anlayabildiğim karmaşık olmayan, konuşma tarzında açıklıyor. Ve bu cevabın daha derinlemesine açıklamalara iyi bir giriş olduğunu düşünüyorum.
Kyle

74

URL'ler büyük / küçük harfe duyarlı değildir, yalnızca bir kısmı bulunur.
Örneğin, URL’de hiçbir şey büyük / küçük harf duyarlı değildir https://google.com,

Atıfla Jenerik Dizim: Uniform Resource Identifier (URI) - RFC 3986

İlk olarak, Wikipedia'dan bir URL şöyle görünür:

 scheme:[//host[:port]][/]path[?query][#fragment]

(Parçayı kaldırdım user:passwordçünkü ilginç değil ve nadiren kullanılıyor)

şemaları büyük / küçük harf duyarlı değildir

Ana bilgisayar alt bileşeni büyük / küçük harf duyarlı değildir.

Yol bileşeni veri içeriyor ...

Sorgu bileşeni hiyerarşik olmayan veriler içeriyor ...

Bireysel medya türleri, farklı alt grup türlerini, görünümleri veya dış referansları belirlemek için parça tanımlayıcı sözdizimindeki kendi kısıtlamalarını veya yapılarını tanımlayabilir.

Yani, schemeve hostbüyük / küçük harf duyarsız.
URL'nin geri kalanı büyük / küçük harf duyarlıdır.

Neden büyük / pathküçük harfe duyarlı?

Bu ana soru gibi görünüyor. Belgelenmediyse bir şey yapıldığını "neden"
olarak cevaplamak zor , ancak çok iyi bir tahminde bulunabiliriz. Spesifikasyondan verilere vurgu yaparak çok spesifik alıntılar seçtim . URL’ye tekrar bakalım:

 scheme:[//host[:port]][/]path[?query][#fragment]
 \____________________/\________________________/
        Location                 Data
  • Konum - Konum kurallı bir biçime sahiptir ve büyük / küçük harf duyarlı değildir. Neden? Muhtemelen binlerce çeşit satın almak zorunda kalmadan bir alan adı satın alabilirsiniz.

  • Veri - veri hedef sunucu tarafından kullanılır ve uygulama ne anlama geldiğini seçebilir . Veri olayını duyarsız hale getirmek hiç mantıklı olmaz. Uygulama daha fazla seçeneğe sahip olmalı ve teknik özelliklerde büyük / küçük harf duyarlılığının tanımlanması bu seçenekleri sınırlayacaktır.
    Bu aynı zamanda HTTPS için de yararlı bir ayrımdır: veriler şifrelenir , ancak ana bilgisayar görülebilir.

Yararlı mı

Büyük / küçük harfe duyarlılık, önbelleğe alma ve kanonik URL'ler söz konusu olduğunda tuzakları vardır, ancak kesinlikle kullanışlıdır. Bazı örnekler:


1
"URL'ler büyük / küçük harf duyarlı değildir." / "URL’nin geri kalanı büyük / küçük harf duyarlıdır." - Bu bir çelişki gibi görünüyor?
MrWhite

8
Gerçekte, şema URL'nin geri kalanında ne bekleneceğini tanımlar. http:ve ilgili şemalar, URL’nin bir DNS ana bilgisayar adına atıfta bulunduğu anlamına gelir. DNS, URL'lerin buluşundan çok önce ASCII büyük / küçük harfe duyarsızdı. İetf.org
O. Jones

3
Güzel ayrıntılı! Tarihsel bir bakış açısıyla gidiyordum. Başlangıçta sadece dosya sistemine isabet ediyorsanız büyük küçük harfe duyarlı olması gereken dosya yoluydu. Aksi takdirde, değildi. Fakat bugün, işler değişti. Örneğin, parametreler ve CGI başlangıçta mevcut değildi. Cevabınız güncel bir gün perspektifini alıyor. Çabalarını ödüllendirmek zorunda kaldım !! Bunu gerçekten sen kazandın! Bunun eskisi gibi patlayacağını kim bilebilirdi ki ?? Alkış !!
Closetnoc

2
@ w3dk: çok ilginç olmayan bir terminoloji tuhaflığı, ancak "büyük / küçük harfe duyarlı", "bir karakterin durumunu değiştirerek bütünün değişebileceği" veya "değiştirerek" anlamına gelebilir Bir karakterin durumu her zaman bütününü değiştirir ". Kobi, ikincisini iddia ediyor gibi görünüyor, büyük / küçük harf duyarlı olmasının, elbette URL'ler için doğru olmayan "önemli bir değişiklik olması durumunda" anlamına gelmesini tercih ediyor. Eskiyi tercih edersin. Bu sadece davaya ne kadar duyarlı olduklarıyla ilgili.
Steve Jessop

2
@ rybo111: Eğer bir kullanıcı example.com/fOObaR yazarsa , özellik, www.example.com adresindeki sunucunun "/ fOObaR" yolunu belirtilmesini gerektirir; Sunucunun "/ foOBaR" den farklı bir şekilde davranması gerekip gerekmediği sorusu sessizdir.
supercat,

59

Basit. İşletim sistemi büyük / küçük harf duyarlıdır. Web sunucuları genellikle dosya sistemine bir noktada vurmaları gerekmedikçe umursamazlar. Linux ve diğer Unix tabanlı işletim sistemlerinin dosya sisteminin kurallarını uyguladığı nokta burasıdır ki bu durumda duyarlılık büyük bir parçasıdır. Bu yüzden IIS hiç bir zaman büyük / küçük harf duyarlı olmamıştır; çünkü Windows hiçbir zaman büyük / küçük harfe duyarlı değildi.

[Güncelleme]

URL’lerin belirttiğim gibi dosya sistemiyle herhangi bir ilişkisi olup olmadığına ilişkin (silindiğinden beri) yorumlarda bazı güçlü tartışmalar oldu. Bu argümanlar ısıtıldı. Bir ilişki olmadığına inanmak son derece kısa görüşlü. Kesinlikle var! Daha fazla açıklayayım.

Uygulama programcıları genellikle sistem dahili programcıları değildir. Hakaret etmiyorum. Bunlar iki ayrı disiplindir ve uygulamaların işletim sistemine kolayca çağrı yapabileceği durumlarda uygulamalar yazmak için sistem iç bilgileri gerekmez. Uygulama programcıları sistemlerin dahili programcıları olmadığından, işletim sistemi hizmetlerini atlamak mümkün değildir. Bunu söylüyorum çünkü bunlar iki ayrı kamp ve nadiren karşıya geçiyorlar. OS servislerini kural olarak kullanmak için uygulamalar yazılır. Elbette bazı nadir istisnalar vardır.

Web sunucuları görünmeye başladığında, uygulama geliştiricileri işletim sistemi servislerini atlamaya çalışmadılar. Bunun birkaç nedeni vardı. Bir, gerekli değildi. İkincisi, uygulama programcıları genellikle işletim sistemi servislerini nasıl atlayacağını bilmiyorlardı. Üç, çoğu işletim sistemi ya son derece istikrarlı ve sağlam ya da son derece basit ve hafif ve maliyete değmezdi.

İlk web sunucularının DEC VAX / VMS sunucuları ve günün Unix'i (Berkeley ve Ultrix gibi diğerleri) gibi pahalı bilgisayarlarda, ana kasa veya orta kasa bilgisayarlarda çalıştıklarını, sonradan kısa bir süre sonra çalıştığını unutmayın. PC'ler ve Windows 3.1 gibi hafif bilgisayarlar. 1997 / 8’de Google gibi daha modern arama motorları görünmeye başladığında, Windows Windows NT’ye taşınmıştı ve Novell ve Linux gibi diğer işletim sistemleri de web sunucuları çalıştırmaya başlamıştı. Apache baskın web sunucusuydu ancak IIS ve O'Reilly gibi çok popüler olan başkaları da vardı. O zamanlar hiçbiri işletim sistemi hizmetlerini atlamamıştır. Web sunucularından hiçbirinin bugün bile yapmaması muhtemeldir.

Erken web sunucuları oldukça basitti. Hala bugünler. Bir sabit sürücüde bulunan bir HTTP isteği aracılığıyla bir kaynak için yapılan herhangi bir istek, web sunucusu tarafından OS dosya sistemi aracılığıyla yapılmıştır / yapılmıştır.

Dosya sistemleri oldukça basit mekanizmalardır. Bir dosyaya erişim için bir istek yapıldığında, bu dosya mevcutsa, istek yetkilendirme alt sistemine iletilir ve izin verilirse orijinal istek karşılanır. Kaynak yoksa veya yetkilendirilmemişse, sistem tarafından bir istisna atılır. Bir uygulama talepte bulunduğunda, bir tetikleyici ayarlanır ve uygulama bekler. İstek cevaplandığında, tetikleyici atılır ve uygulama istek yanıtını işler. Hala bugün bu şekilde çalışıyor. Uygulama isteğin yerine getirildiğini görürse devam eder, başarısız olursa, uygulama kodu içinde bir hata koşulu uygular veya işlenmezse ölür. Basit.

Bir web sunucusu söz konusu olduğunda, bir yol / dosya için bir URL isteğinin yapıldığını varsayarsak, web sunucusu, URL isteğinin yolunu / dosya kısmını alır (URI) ve dosya sistemine bir istek yapar; veya bir istisna atar. Web sunucusu daha sonra yanıtı işler. Örneğin, istenen yol ve dosya yetkilendirme alt sistemi tarafından bulunursa ve erişildiyse, web sunucusu bu G / Ç isteğini normal şekilde işler. Dosya sistemi bir istisna atarsa, dosya bulunmazsa web sunucusu 404 hatası, neden kodu izinsizse bir 403 Yasaktır.

Bazı işletim sistemleri büyük / küçük harf duyarlı olduğundan ve bu tür dosya sistemleri tam eşleşmeler gerektirdiğinden, web sunucusundan istenen yolun / dosyanın tam olarak sabit sürücüde var olanla eşleşmesi gerekir. Bunun nedeni basit. Web sunucuları ne demek istediğinizi tahmin etmiyor. Hiçbir bilgisayar programlanmadan bunu yapmaz. Web sunucuları istekleri aldıkça işler. URL isteğinin yol / dosya bölümü doğrudan dosya sistemine aktarılıyorsa, sabit sürücüde bulunanlarla eşleşmiyorsa, dosya sistemi bir istisna atar ve web sunucusu bir 404 Bulunamadı hatası verir.

Gerçekten bu kadar basit millet. Bu roket bilimi değil. Bir URL'nin yol / dosya kısmı ile dosya sistemi arasında mutlak bir ilişki vardır.


1
Bence argüman hatalı. Berners-Lee'nin ftp URL'lerinin büyük / küçük harf duyarlılığı konusunda bir seçeneği yoktu. Http adresleri tasarladı. Onları yalnızca US-ASCII olarak tanımlayabilir ve duyarsız hale getirebilirdi. URL yolunu dosya sistemine geçen herhangi bir web sunucusu varsa, o zaman güvensizlerdi ve URL kodlama tanıtımı da onlarla uyumlulukta kaldı. Yolun işletim sistemi çökertme davasına teslim edilmeden önce işlenmesi göz önüne alındığında uygulanması kolay olacaktı. Bu nedenle, bunun bir uygulama tuhaflığı değil bir tasarım kararı olarak görmemiz gerektiğini düşünüyorum.
William Hay,

@WilliamHay Bunun Berners-Lee ya da web tasarımı ile ilgisi yok. İşletim sisteminin kısıtlamaları ve gereksinimleri ile ilgilidir. Ben emekli sistemler iç mühendisiyim. O zaman bu sistemler üzerinde çalıştım. Size tam olarak neden URL’lerin büyük / küçük harfe duyarlı olduğunu söylüyorum. Bu bir tahmin değil. Bu bir fikir değil. Bu bir gerçek. Cevabım kasıtlı olarak basitleştirildi. Tabii ki herhangi bir açık beyanı yayınlamadan önce yapılabilecek dosya kontrolleri ve diğer işlemler vardır. Ve Evet (!) Web sunucuları sonuç olarak bu güne hala kısmen güvensiz.
Closetnoc

URL’lerin büyük / küçük harf duyarlı olup olmadığı, web tasarımı ile ilgisi yoktur? Gerçekten mi? Otoritenin argümanı ve ardından iddianın Argümanı. Bu web sunucuları, bir URL'nin yol bileşenini doğrudan veya açık bir aramaya doğrudan veya daha az iletir, bunun nedeni olmamasının nedeni URL'lerin tasarımının bir sonucudur. Sunucular (veya FTP durumunda akıllı istemciler), dosya sistemlerinin büyük / küçük harf duyarlılığını kullanıcıdan gizleyebilir. Yapmadıkları bir tasarım kararıdır.
William Hay,

@WilliamHay Çim hazneyi yavaşlatmanız ve yazdıklarımı yeniden okumanız gerekiyor. ARPA-Net, vb. İçin OS bileşenleri, protokol yığınları ve yönlendirici kodu yazan emekli bir sistem iç mühendisiyim. Apache, O'Reilly ve IIS internals ile çalıştım. FTP argümanınız su tutmaz, çünkü en azından büyük FTP sunucuları aynı nedenle büyük / küçük harf duyarlı kalır. Hiçbir zaman URL / URI tasarımı hakkında bir şey söylemedim. Hiçbir zaman web sunucularının işlem yapmadan değerleri geçtiğini söylemedim. İşletim sistemi servislerinin yaygın olarak kullanıldığını ve dosya sisteminin başarılı olması için tam bir eşleşme gerektirdiğini söyledim.
closetnoc

@WilliamHay Lütfen anlayın, biz ve ben çapraz amaçlarla düşündüğümüzü anlayın. Cevabımda söylediğim tek şey, bazı işletim sistemleri için dosya sistemi çağrılarının tasarım açısından büyük / küçük harf duyarlı olmasıdır. Sistem çağrılarını kullanan ve çoğu yapılan uygulamalar, işletim sistemi kurallarının uygulanması ile sınırlıdır - bu durumda, büyük / küçük harf duyarlılığı. Bu kuralı atlamak imkansız değildir. Aslında bu, bazı durumlarda pratik olmasa da önemsiz olabilir. Ben rutin bir nedenle veya başka için kablooie gitti sabit diskler deşifre etmek işimde dosya sistemini atlamak için kullanılan veya veritabanı dosya iç vb analiz etmek
closetnoc

21
  1. URL’ler bir UNIFORM Kaynak bulucu olduğunu iddia ediyor ve web’den önceki kaynakları işaret ediyor. Bunlardan bazıları büyük / küçük harf duyarlıdır (örneğin birçok ftp sunucusu) ve URL'lerin bu kaynakları makul bir şekilde sezgisel bir şekilde gösterebilmesi gerekir.

  2. Büyük küçük harf duyarsızlığı, bir eşleşme ararken daha fazla çalışma gerektirir (işletim sisteminde veya üzerinde).

  3. URL'leri büyük / küçük harf duyarlı olarak tanımlarsanız, tek tek sunucular bunları isterlerse büyük / küçük harf duyarlı olarak uygulayabilir. Tersi doğru değil.

  4. Dava duyarsızlığı uluslararası bağlamlarda önemsiz olabilir: https://en.wikipedia.org/wiki/Dotted_and_dotless_I . Ayrıca RFC1738, kodlanmış ancak bir karakter kümesi belirtmemiş olması şartıyla ASCII aralığının dışındaki karakterlerin kullanımına izin vermiştir. Bu, dünya çapında web denen bir şey için oldukça önemlidir. URL'leri büyük / küçük harf duyarsız olarak tanımlamak, hatalar için çok fazla alan açacaktır.

  5. Bir URI'ye (örneğin bir Veri URI'si ) çok fazla veri paketlemeye çalışıyorsanız, büyük ve küçük harflerin farklı olması durumunda daha fazla paketleyebilirsiniz.


1
URL’lerin ASCII ile tarihsel olarak sınırlı olduğundan eminim. Bu yüzden uluslararasılaştırma özgün bir sebep değildir. Unix'in büyük / küçük harfe duyarlı olması, OTOH, muhtemelen büyük bir rol oynadı.
derobert

Bir URL'de RFC1738 sadece kodlanmamış bir ASCII alt kümesi kullanılabilse de, ASCII aralığının dışındaki karakterlerin kodlanmış kullanılabileceğini belirtir. Bir karakter kümesi belirtilmeden, hangi oktetlerin durum dışında aynı karakteri temsil ettiğini bilmek mümkün değildir. Güncellenmiş.
William Hay

1
Re # 4: Aslında bundan daha kötü. Noktalı ve noktalı Ben daha genel bir ilkenin bir kanıtıyım ; her şey UTF-8 olsa (veya başka bir UTF) olsa bile , metnin ait olduğu yerel ayarı bilmeden doğru büyük harf kullanamazsınız veya küçük harfleri kullanamazsınız. Varsayılan yerel ayarda, küçük bir Latin harfi i, küçük bir Latin harfi i, küçük bir Latin alfabesi harfine çevirir, çünkü nokta ekler (“Türk sermayesi noktasız I” kod noktası yoktur; ASCII kodunu kullanmanız gerekir). puan). Farklılıkları kodlamak için at ve bu "gerçekten zor" dan "tamamen anlaşılmaz" a kadar gider.
Kevin,

5

Blogdan Eski Bir Yeni Şey çaldım "neden bir şey böyle?" Şeklindeki sorulara yaklaşma alışkanlığı. karşı soru ile "durum olmasaydı dünya nasıl olurdu?"

Diyelim ki bir klasörden kendime belge dosyalarımı sunmak için bir web sunucusu kurduğumu ve böylece ofisteyken telefonda okuyabilmemi sağladım. Şimdi, belgelerim klasöründe, ben üç dosya var todo.txt, ToDo.txtve TODO.TXT(ı biliyorum ama dosyaları yaptığında bana mantıklı geldi).

Bu dosyalara erişmek için hangi URL’yi kullanabilmek isterdim? Kullanarak sezgisel bir şekilde onlara erişmek istiyorum http://www.example.com/docs/filename.

Diyelim ki adres defterime web üzerinden de yapabileceğim bir kişi eklememe izin veren bir komut dosyası var. Bu parametreleri nasıl almalı? Peki, onu kullanmak istiyorum http://www.example.com/addcontact.php?name=Tom McHenry von der O'Reilly. Ancak adı duruma göre belirtmem için bir yol olmasaydı, bunu nasıl yapardım?

Cat ve CAT, Text ve TEXT, lateks ve LaTeX için wiki sayfalarını nasıl ayırt edebilirim? Ben dezavantajlı sayfalar sanırım ama sadece istediğim şeyi almayı tercih ediyorum.

Ama yine de, yanlış soruya cevap veriyor gibi geliyor.

Gerçekten sorduğunu düşündüğüm soru şudur: "Neden web sunucuları 404'ü sadece bir dava farkı için, bilgisayar olduklarında, hayatı kolaylaştırmak için tasarlandılar ve en azından en belirgin durum değişikliklerini bulabilecekler. URL’nin işe yarayacağını yazdım? "

Bu sorunun cevabı, bazı siteler bunu yapmış olsa da (ve daha iyisi, diğer yazım hatalarını da kontrol ederler), hiç kimse bir web sunucusunun varsayılan 404 hata sayfasını değiştirmenin faydalı olacağını düşünmedi ... ama belki de yapmalı mı?


1
Bazı siteler herhangi bir sorguyu küçük harfe veya tutarlı bir şeye dönüştürmek için bir tür mekanizma kullanır. Bir bakıma, bu akıllı.
closetnoc

Hayır, yapmamalılar. Bu işlev, istendiğinde eklenebilir ve çoğu zaman eklenir (örneğin, apache'deki modüller tarafından). Bu tür bir değişikliği varsayılan davranış olarak (veya daha da kötüsü değişmez davranış olarak) uygulamak, göreceli olarak nadir olandan daha rahatsız edici olacaktır. Birisinin ana makine adının ötesinde bir URL'yi manuel olarak girmesi gerektiği durumlarda. Bunu yapmamanın iyi bir örneği için Ağ Çözümleri, varolmayan etki alanı hatalarını genel DNS sorgularından "düzelttiğinde" fiyaskoyu hatırlayın.
SirNickity

@SirNickity Hiç kimse herhangi bir seviyede değişmezlik teklif etmiyordu ve web sunucusu hata sayfaları şimdiye kadar kullandığım her web sunucusu üzerinde yapılandırılabilir; hiç kimse 404'ü 30 * kodla değiştirmeyi önermiyordu, bunun yerine, hata sayfasına tıklanabilir insan önerisi bağlantılarının bir listesini ekledi; etki alanı adları çok farklı bir konu ve konu büyük / küçük harf duyarlı ve farklı bir güvenlik bağlamında; ve IIS, URI'lerin yolundaki veya dosya adı bölümlerindeki büyük / küçük harf farklarını önceden görmezden geliyor (yok sayarak).
Dewi Morgan

1996'dan beri Apache bunu mod_speling ile yapmanıza izin verdi . Sadece yapılacak çok popüler bir şey gibi görünmüyor. Unix / Linux çalışanları büyük / küçük harf duyarsızlığını kural, küçük harf istisnası olarak görür.
reinierpost

4

Yukarıdaki cevap doğru ve iyi olmasına rağmen. Biraz daha puan eklemek istiyorum.

Daha iyi anlamak için, Unix (Linux) Vs Windows sunucusu arasındaki temel farkı anlamak gerekir. Unix büyük / küçük harfe duyarlıdır ve Windows büyük / küçük harfe duyarlı değildir.

HTTP protokolü 1990 yılında geliştirildi veya uygulamaya geçmeye başladı. HTTP protokolü, CERN enstitülerinde çalışan mühendisler tarafından tasarlandı, o günlerin çoğu bilim adamı Unix makinelerini kullanıyordu, Windows kullanıyordu.

Bilim adamlarının çoğu Unix'e aşinaydı, bu yüzden Unix tarzı dosya sisteminden etkilenmiş olabilirler.

Windows sunucusu 2000'den sonra piyasaya sürüldü. Windows sunucusu popüler hale gelmeden çok önce HTTP protokolü iyi olgunlaştı ve şartname tamamlandı.

Sebep bu olabilir.


2
"Windows sunucusu 2000 yılından sonra serbest bırakıldı." Windows NT 3.1 NT olma başladığı takım muhtemelen 1995 yılında 1993 NT 3.51 sizinle aynı fikirde olurdu olgun ve yeterli iş açısından kritik sunucu uygulamalarını desteklemek için köklü.
Bir CVn

NT 3.51 Win 3.1 arayüzüne sahipti. Windows gerçekten Windows 95'e kadar çıkmadı ve aynı arayüzü almak için NT 4.0 kullanıldı.
Thorbjørn Ravn Andersen

Michael Kjörling, kabul etti. Değiştireyim.
Mani

1
@ ThorbjørnRavnAndersen Sunucu pazarında NT 3.51 makul derecede başarılı oldu. Tüketici / tüketici pazarında, NT hattında ciddi çekiş kazanmaya başlamadan önce Windows 2000'e (NT 5.0) kadar sürdü.
CVn

Aslında, WorldWideWeb başlangıçta büyük küçük harf duyarlı dosya sistemlerine sahip Unix tabanlı sistemlerde ve çoğu URL'de doğrudan dosya sistemindeki dosyalarla eşleştirildi.
reinierpost

4

Kişi nasıl "neden bu şekilde tasarlandı" okumalı? soru? Karar verme sürecinin tarihsel olarak doğru bir hesabını mı soruyorsunuz, yoksa "neden birileri bu şekilde tasarlar?" Mı soruyorsunuz?

Tarihsel olarak doğru bir hesap almak çok nadiren mümkün. Bazen standart komitelerde kararlar alındığında, tartışmanın nasıl yapıldığına dair bir belgesel iz vardır, ancak web kararlarının ilk günlerinde birkaç kişi tarafından aceleyle yapıldı - bu durumda muhtemelen TimBL'nin kendisi tarafından - ve gerekçenin olasılığı düşüktür. yazılmış olması. Ancak TimBL, URL'lerin tasarımında hatalar yaptığını itiraf etti - bkz. Http://www.dailymail.co.uk/sciencetech/article-1220286/Sir-Tim-Berners-Lee-admits-forward-slashes-web-address -mistake.html

URL'lerin başında, URL'ler doğrudan dosya adlarıyla eşleştirilir ve dosyalar genellikle Unix benzeri makinelerdedir ve Unix benzeri makinelerde büyük / küçük harf duyarlı dosya adları bulunur. Bu yüzden benim tahminim, uygulama kolaylığı için bu şekilde gerçekleştiğini ve kullanılabilirliğin (son kullanıcılar için) hiç dikkate alınmadığı yönünde. Yine, ilk günlerde kullanıcılar zaten tüm Unix programcılarıydı.


Son kullanıcılar da Unix kullanıcılarıydı (zorunlu olarak programcılar değil, yüksek enerjili fizikçiler ve benzeri), bu yüzden onlar da büyük küçük harf duyarsızlığına alışkınlardı.
reinierpost

3

Bunun etki alanınızı satın aldığınız yerle ilgisi yoktur, DNS büyük / küçük harf duyarlı değildir. Ancak, hosting için kullandığınız sunucudaki dosya sistemidir.

Bu gerçekten bir sorun değil ve * nix ana bilgisayarlarında oldukça yaygındır. Sayfalarınıza yazdığınız tüm bağlantıların doğru olduğundan ve bir sorun yaşamadığınızdan emin olun. Kolaylaştırmak için sayfalarınızı her zaman küçük harflerle adlandırmanızı öneririm, ardından bir bağlantı yazarken adı iki kez kontrol etmeniz gerekmez.


2

Closetnoc işletim sistemi konusunda haklıdır. Bazı dosya sistemleri, aynı adı, farklı dosyalar ile aynı kasada kullanır.

Ayrıca, büyük / küçük harfe duyarlı bir URL’ye sahip olmanın gerçek bir amacı / avantajı var mı (büyük harf kullanımı olursa olsun, aynı sayfaya işaret eden URL’lerin büyük çoğunluğunun aksine)?

Evet. yinelenen içerik sorunlarını önlemek için.

Örneğin, aşağıdaki URL’lere sahipseniz:

http://example.com/page-1
http://example.com/Page-1
http://example.com/paGe-1
http://example.com/PAGE-1
http://example.com/pAGE-1

Hepsi de aynı içeriğe sahip aynı sayfaya dikkat çekti, sonra yinelenen içeriğiniz olacak ve bir Google arama konsolu (web yöneticisi araçları) hesabınız varsa, Google bunu size bildirecektir.

Bu durumda iseniz, küçük harfli URL'lerin hepsini kullanmak, daha sonra da en az bir büyük harf içeren URL'leri küçük harf sürümüne yönlendirmektir. Bu yüzden yukarıdaki URL’ler listesinde, tüm URL’leri ilk URL’ye yönlendirin.


"Evet. Yinelenen içerik sorunlarını önlemek için." - Ama tersi doğru gibi görünüyor? URL’lerin büyük / küçük harf duyarlı olması (ve arama motorlarının bunlara bu şekilde davranması) bahsettiğiniz yinelenen içerik sorunlarına neden olmaktadır . Eğer URL'ler evrensel olarak büyük / küçük harf duyarsız olsaydı, o zaman farklı vakalarla ilgili yinelenen içerik sorunları olmazdı. page-1olurdu aynı şekilde PAGE-1.
MrWhite

Kötü bir sunucu yapılandırması, kasa söz konusu olduğunda yinelenen içeriğe neden olabilecek şey olduğunu düşünüyorum. Örneğin, RewriteRule ^request-uri$ /targetscript.php [NC].htaccess'te saklanan ifade eşleşecektir http://example.com/request-urive http://example.com/ReQuEsT-Uriçünkü [NC]bir normal ifadeyi değerlendirirken kasanın önemli olmadığını gösterir.
Mike,

1

Büyük küçük harf duyarlılığının değeri var.

26 harf varsa, her biri büyük harfle yazılabilir, bu 52 karakterdir.

4 karakter, 7311616 kombinasyona eşit 52 * 52 * 52 * 52 kombinasyon olasılığına sahiptir.

Karakterleri büyük harf yapamıyorsanız, kombinasyon miktarı 26 * 26 * 26 * 26 = 456976

52 karakterden 14 kat daha fazla kombinasyon vardır. 26'dan daha fazladır. Böylece, veri depolamak için URL'ler daha kısa olabilir ve daha az veri aktarımı olan ağlar üzerinden daha fazla bilgi iletilebilir.

Bu yüzden youtube'u https://www.youtube.com/watch?v=xXxxXxxX gibi URL’leri kullanarak görüyorsunuz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.