Mengapa URL peka huruf besar kecil?

54

Pertanyaan saya: Ketika URL pertama kali dirancang, mengapa sensitivitas huruf menjadi fitur? Saya menanyakan hal ini karena menurut saya (yaitu, orang awam) bahwa case-insensitivity lebih disukai untuk mencegah kesalahan yang tidak perlu dan menyederhanakan serangkaian teks yang sudah rumit.

Juga, adakah tujuan / keuntungan nyata untuk memiliki URL peka huruf besar-kecil (yang bertentangan dengan sebagian besar URL yang mengarah ke halaman yang sama tidak peduli kapitalisasi)?

Wikipedia, misalnya, adalah situs web yang sensitif terhadap huruf besar (kecuali untuk karakter pertama):

https://en.wikipedia.org/wiki/St Sebuah ck_Exchange adalah DOA.

Kyle
sumber
11
Anda jelas tidak menjalankan IIS di Windows
John Conde
53
Saya membayangkan bahwa itscrap.com, expertsexchange, dan whorepresents.com lebih suka bahwa lebih banyak orang menggunakan nama case-sensitive. Untuk lebih lanjut, lihat boredpanda.com/worst-domain-names .
Eric Towers
22
URL dirancang ketika dinosaurus yang diberikan pada sistem Unix menjelajahi Bumi, dan Unix peka terhadap huruf besar-kecil.
Thorbjørn Ravn Andersen
11
Wikipedia mencoba menggunakan huruf besar yang benar untuk judul subjek dan menggunakan pengalihan untuk perbedaan umum. misalnya. html, htmdan Htmlsemua redirect ke HTML. Tetapi yang penting, karena masalah subjek yang sangat besar, dimungkinkan untuk memiliki lebih dari satu halaman di mana URL hanya berbeda berdasarkan kasus. Misalnya: Lateks dan LaTeX
MrWhite
7
@ edc65 Tapi Kobi menyatakan bahwa bagian-bagian dari URL (terutama jalan ) adalah case-sensitive - jadi, tidak yang membuat URL (secara keseluruhan) case-sensitive?
MrWhite

Jawaban:

8

Mengapa URL tidak peka huruf besar-kecil?

Saya mengerti bahwa mungkin terlihat seperti pertanyaan retoris yang provokatif (dan "pendukung setan"), tetapi saya pikir ini berguna untuk dipertimbangkan. Desain HTTP adalah "klien", yang biasa kita sebut "browser web", meminta "server web" untuk data.

Ada banyak, banyak server web berbeda yang dirilis. Microsoft telah merilis IIS dengan sistem operasi Windows Server (dan lainnya, termasuk Windows XP Professional). Unix memiliki kelas berat seperti nginx dan Apache, belum lagi penawaran yang lebih kecil seperti httpd internal OpenBSD, atau thttpd, atau lighttpd. Selain itu, banyak perangkat yang mendukung jaringan telah membuat server web yang dapat digunakan untuk mengonfigurasi perangkat, termasuk perangkat dengan tujuan khusus untuk jaringan, seperti router (termasuk banyak titik akses Wi-Fi, dan modem DSL) dan perangkat lain seperti printer atau UPS (unit catu daya tak terputus yang didukung baterai) yang mungkin memiliki konektivitas jaringan.

Jadi pertanyaannya, "Mengapa URL case-sensitive?", Bertanya, "Mengapa server web memperlakukan URL sebagai case-sensitive?" Dan jawaban sebenarnya adalah: mereka tidak semua melakukan itu. Setidaknya satu server web, yang cukup populer, biasanya TIDAK peka terhadap huruf besar-kecil. (Server web adalah IIS.)

Alasan utama untuk perilaku yang berbeda antara server web yang berbeda mungkin bermuara pada masalah kesederhanaan. Cara sederhana untuk membuat server web adalah dengan melakukan hal-hal dengan cara yang sama seperti bagaimana sistem operasi komputer / perangkat menemukan file. Sering kali, server web mencari file untuk memberikan tanggapan. Unix dirancang di sekitar komputer kelas atas, sehingga Unix menyediakan fungsionalitas yang diinginkan untuk memungkinkan huruf besar dan kecil. Unix memutuskan untuk memperlakukan huruf besar dan kecil sebagai berbeda karena, yah, mereka berbeda. Itu hal yang langsung dan alami untuk dilakukan. Windows memiliki sejarah menjadi case-insensitive karena keinginan untuk mendukung perangkat lunak yang sudah dibuat, dan sejarah ini kembali ke DOS yang sama sekali tidak mendukung huruf kecil, mungkin dalam upaya menyederhanakan hal-hal dengan komputer yang kurang kuat yang menggunakan lebih sedikit memori. Karena sistem operasi ini berbeda, hasilnya adalah server web yang dirancang sederhana (versi awal) mencerminkan perbedaan yang sama.

Sekarang, dengan semua latar belakang itu, berikut adalah beberapa jawaban spesifik untuk pertanyaan spesifik:

Ketika URL pertama kali dirancang, mengapa sensitivitas huruf menjadi fitur?

Kenapa tidak? Jika semua server web standar tidak peka huruf besar kecil, itu akan menunjukkan bahwa server web mengikuti serangkaian aturan yang ditentukan oleh standar. Tidak ada aturan yang mengatakan bahwa kasus itu perlu diabaikan. Alasan bahwa tidak ada aturan hanyalah karena tidak ada alasan untuk ada aturan semacam itu. Mengapa repot-repot membuat aturan yang tidak perlu?

Saya menanyakan hal ini karena menurut saya (yaitu, orang awam) bahwa case-insensitivity lebih disukai untuk mencegah kesalahan yang tidak perlu dan menyederhanakan serangkaian teks yang sudah rumit.

URL dirancang untuk diproses oleh mesin. Meskipun seseorang dapat mengetik URL lengkap ke bilah alamat, itu bukan bagian utama dari desain yang dimaksud. Desain yang dimaksud adalah orang-orang akan mengikuti ("mengklik") tautan Jika orang awam rata-rata melakukan itu, maka mereka benar-benar tidak peduli apakah URL yang tak terlihat itu sederhana atau rumit.

Juga, adakah tujuan / keuntungan nyata untuk memiliki URL peka huruf besar-kecil (yang bertentangan dengan sebagian besar URL yang mengarah ke halaman yang sama tidak peduli kapitalisasi)?

Poin bernomor kelima dari jawaban William Hay menyebutkan satu keunggulan teknis: URL dapat menjadi cara yang efektif bagi peramban web untuk mengirim sedikit informasi ke server web, dan lebih banyak informasi dapat dimasukkan jika ada batasan yang lebih sedikit, jadi sensitivitas huruf besar-kecil pembatasan akan mengurangi seberapa banyak informasi dapat dimasukkan.

Namun, dalam banyak kasus, tidak ada manfaat yang sangat menarik untuk sensitivitas kasus, yang dibuktikan oleh fakta bahwa IIS biasanya tidak peduli dengannya.

Singkatnya, alasan yang paling menarik kemungkinan hanya kesederhanaan bagi mereka yang merancang perangkat lunak server web, terutama pada platform case-sensitive seperti Unix. (HTTP bukan sesuatu yang mempengaruhi desain asli Unix, karena Unix lebih tua dari HTTP.)

TOOGAM
sumber
"Alasan utama untuk perilaku yang berbeda antara browser web yang berbeda mungkin bermuara pada masalah kesederhanaan." - Saya menganggap Anda maksud "server web", bukan "browser web" di sini dan di beberapa tempat lain?
MrWhite
2
Diperbarui. Tinjau setiap kasus "browser" dan membuat beberapa penggantian. Terima kasih telah menunjukkan ini sehingga beberapa kualitas dapat ditingkatkan.
TOOGAM
1
Saya telah menerima beberapa jawaban bagus untuk pertanyaan saya, mulai dari yang historis hingga yang teknis. Saya ragu untuk menentang arus dan menerima jawaban dengan peringkat lebih rendah, tetapi jawaban @ TOOGAM adalah yang paling membantu bagi saya. Jawaban ini menyeluruh dan luas namun menjelaskan konsep dengan cara yang tidak rumit, percakapan yang bisa saya mengerti. Dan saya pikir jawaban ini adalah pengantar yang bagus untuk penjelasan yang lebih mendalam.
Kyle
74

URL tidak peka huruf besar-kecil, hanya sebagian saja.
Misalnya, tidak ada yang peka huruf besar-kecil di URL https://google.com,

Dengan mengacu pada RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax

Pertama, dari Wikipedia , sebuah URL terlihat seperti:

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

(Saya sudah menghapus user:passwordbagian itu karena tidak menarik dan jarang digunakan)

Skema tidak peka huruf besar-kecil

Subkomponen host tidak case-sensitive.

Komponen jalur berisi data ...

Komponen kueri berisi data non-hierarkis ...

Jenis media individual dapat menetapkan batasan atau struktur mereka sendiri dalam sintaks pengidentifikasi fragmen untuk menentukan jenis subset, pandangan, atau referensi eksternal yang berbeda.

Jadi, schemedan hosttidak peka huruf besar-kecil.
URL lainnya peka huruf besar-kecil.

Mengapa pathcase-sensitive?

Ini sepertinya menjadi pertanyaan utama.
Sulit untuk menjawab "mengapa" sesuatu dilakukan jika tidak didokumentasikan, tetapi kita dapat membuat tebakan yang sangat baik.
Saya telah mengambil kutipan yang sangat spesifik dari spec, dengan penekanan pada data .
Mari kita lihat lagi URL:

 scheme:[//host[:port]][/]path[?query][#fragment]
 \____________________/\________________________/
        Location                 Data
  • Lokasi - Lokasi memiliki bentuk kanonik, dan tidak peka huruf besar-kecil. Mengapa? Mungkin agar Anda bisa membeli nama domain tanpa harus membeli ribuan varian.

  • Data - data digunakan oleh server target, dan aplikasi dapat memilih apa artinya . Tidak masuk akal untuk membuat case case tidak sensitif. Aplikasi harus memiliki lebih banyak opsi, dan mendefinisikan case-insensitivity dalam spesifikasi akan membatasi opsi-opsi ini.
    Ini juga merupakan perbedaan yang berguna untuk HTTPS: data dienkripsi , tetapi tuan rumah terlihat.

Apakah itu berguna?

Sensitivitas huruf memiliki kekurangan ketika datang ke caching dan URL kanonik, tetapi tentu berguna. Beberapa contoh:

Kobi
sumber
1
"URL tidak peka huruf besar-kecil." / "Sisa URL peka huruf besar-kecil." - Ini sepertinya menjadi kontradiksi?
MrWhite
8
Sebenarnya, skema menentukan apa yang diharapkan di sisa URL. http:dan skema terkait berarti bahwa URL merujuk ke nama host DNS. DNS adalah ASCII tidak peka terhadap kasus jauh sebelum penemuan URL. Lihat halaman 55 dari ietf.org/rfc/rfc883.txt
O. Jones
3
Terinci dengan baik! Saya pergi dari sudut pandang historis. Awalnya jalur file yang diperlukan untuk menjadi case sensitif hanya jika Anda menekan sistem file. Kalau tidak, tidak. Tetapi hari ini, banyak hal telah berubah. Misalnya, parameter dan CGI pada awalnya tidak ada. Jawaban Anda mengambil perspektif hari ini. Saya harus menghargai usaha Anda !! Anda benar-benar menggali yang satu ini! Siapa yang tahu ini akan meledak seperti itu ?? Tepuk tangan!!
closetnoc
2
@ w3dk: ini adalah istilah terminologi yang tidak terlalu menarik, tetapi Anda bisa mengartikan "case-sensitive", "mengubah case dari sebuah karakter dapat mengubah keseluruhan", atau Anda bisa mengartikannya sebagai, "mengubah kasus karakter selalu mengubah keseluruhan ". Kobi tampaknya menegaskan yang terakhir, ia lebih suka bahwa case-sensitive harus berarti "setiap perubahan dalam kasus adalah signifikan", yang tentu saja tidak berlaku untuk URL. Anda lebih suka yang pertama. Ini hanya masalah seberapa sensitif mereka terhadap kasus.
Steve Jessop
2
@ rybo111: Jika pengguna mengetikkan contoh.com/fOObaR , spesifikasi mengharuskan server di www.example.com menerima jalur "/ fOObaR" seperti yang diberikan; itu diam pada pertanyaan apakah server harus memperlakukan yang berbeda dari "/ foOBaR".
supercat
59

Sederhana. OS peka huruf besar-kecil. Server web umumnya tidak peduli kecuali mereka harus menekan sistem file di beberapa titik. Di sinilah Linux dan sistem operasi berbasis Unix lainnya menegakkan aturan sistem file di mana sensitivitas kasus adalah bagian utama. Inilah sebabnya mengapa IIS tidak pernah peka terhadap kasus; karena Windows tidak pernah case sensitif.

[Memperbarui]

Ada beberapa argumen kuat dalam komentar (sejak dihapus) tentang apakah URL memiliki hubungan dengan sistem file seperti yang telah saya nyatakan. Argumen-argumen ini menjadi panas. Adalah sangat picik untuk percaya bahwa tidak ada hubungan. Benar-benar ada! Biarkan saya jelaskan lebih lanjut.

Pemrogram aplikasi umumnya bukan pemrogram internal sistem. Saya tidak sedang menghina. Mereka adalah dua disiplin ilmu yang terpisah dan pengetahuan sistem internal tidak diperlukan untuk menulis aplikasi ketika aplikasi hanya dapat melakukan panggilan ke OS. Karena pemrogram aplikasi bukan pemrogram internal sistem, memintas layanan OS tidak dimungkinkan. Saya mengatakan ini karena ini adalah dua kubu yang terpisah dan mereka jarang menyeberang. Aplikasi ditulis untuk menggunakan layanan OS sebagai aturan. Tentu saja ada beberapa pengecualian.

Kembali ketika server web mulai muncul, pengembang aplikasi tidak berusaha untuk memotong layanan OS. Ada beberapa alasan untuk ini. Satu, itu tidak perlu. Dua, pemrogram aplikasi umumnya tidak tahu cara mem-bypass layanan OS. Tiga, kebanyakan OS sangat stabil dan kuat, atau sangat sederhana dan ringan dan tidak sepadan dengan biaya.

Perlu diingat bahwa server web awal berjalan pada komputer mahal seperti server DEC VAX / VMS dan Unix of the day (Berkeley dan Ultrix dan juga yang lain) pada komputer bingkai utama atau komputer bingkai tengah, lalu segera setelah pada komputer ringan seperti PC dan Windows 3.1. Ketika mesin pencari yang lebih modern mulai muncul, seperti Google pada tahun 1997/8, Windows telah pindah ke Windows NT dan OS lain seperti Novell dan Linux juga mulai menjalankan server web. Apache adalah server web yang dominan meskipun ada yang lain seperti IIS dan O'Reilly yang juga sangat populer. Tak satu pun dari mereka pada saat itu melewati layanan OS. Kemungkinan tidak ada server web yang dapat melakukan hal ini bahkan sampai hari ini.

Server web awal cukup sederhana. Mereka masih ada sampai sekarang. Setiap permintaan yang dibuat untuk sumber daya melalui permintaan HTTP yang ada pada hard drive adalah / dibuat oleh server web melalui sistem file OS.

Sistem file adalah mekanisme yang agak sederhana. Karena permintaan dibuat untuk akses ke file, jika file itu ada, permintaan tersebut diteruskan ke sub-sistem otorisasi dan jika diberikan, permintaan asli terpenuhi. Jika sumber daya tidak ada atau tidak diotorisasi, pengecualian dilemparkan oleh sistem. Ketika aplikasi mengajukan permintaan, pemicu diatur dan aplikasi menunggu. Ketika permintaan dijawab, pemicu dilemparkan dan aplikasi memproses respons permintaan. Masih bekerja seperti itu sampai sekarang. Jika aplikasi melihat bahwa permintaan telah terpenuhi itu terus, jika gagal, aplikasi mengeksekusi kondisi kesalahan dalam kode itu atau mati jika tidak ditangani. Sederhana.

Dalam kasus server web, dengan asumsi bahwa permintaan URL untuk path / file dibuat, server web mengambil path / file bagian dari permintaan URL (URI) dan membuat permintaan ke sistem file dan itu baik puas atau melempar pengecualian. Server web kemudian memproses respons. Jika, misalnya, jalur dan file yang diminta ditemukan dan akses diberikan oleh sub-sistem otorisasi, maka server web memproses permintaan I / O seperti biasa. Jika sistem file melempar pengecualian, maka server web mengembalikan kesalahan 404 jika file tidak ditemukan atau 403 dilarang jika kode alasan tidak sah.

Karena beberapa OS peka huruf besar-kecil dan sistem file jenis ini membutuhkan pencocokan sama persis, jalur / file yang diminta dari server web harus sama persis dengan apa yang ada di hard drive. Alasannya sederhana. Server web tidak menebak apa yang Anda maksud. Tidak ada komputer yang melakukannya tanpa diprogram. Server web hanya memproses permintaan saat mereka menerimanya. Jika bagian jalur / file dari permintaan URL diteruskan langsung ke sistem file tidak cocok dengan apa yang ada di hard drive, maka sistem file melempar pengecualian dan server web mengembalikan kesalahan 404 Tidak Ditemukan.

Benar-benar orang yang sederhana. Ini bukan ilmu roket. Ada hubungan absolut antara bagian path / file dari URL dan sistem file.

closetnoc
sumber
1
Saya pikir argumen Anda cacat. Sementara Berners-Lee tidak punya pilihan tentang sensitivitas case dari ftp URL. Dia harus merancang URL http. Dia bisa menetapkan mereka sebagai AS-ASCII saja dan tidak sensitif huruf. Jika ada server web yang baru saja melewati jalur URL ke sistem file maka mereka tidak aman dan pengenalan penyandian URL merusak kompatibilitasnya. Mengingat bahwa jalan sedang diproses sebelum menyerahkan ke OS smashing case akan mudah diimplementasikan. Oleh karena itu saya pikir kita harus menganggap ini sebagai keputusan desain bukan kekhasan implementasi.
William Hay
@ WillillHay Ini tidak ada hubungannya dengan Berners-Lee atau desain web. Ini tentang batasan dan persyaratan OS. Saya seorang pensiunan insinyur sistem internal. Saya bekerja pada sistem ini pada saat itu. Saya memberi tahu Anda persis mengapa URL peka huruf besar-kecil. Itu bukan tebakan. Itu bukan opini. Itu adalah fakta. Jawaban saya sengaja disederhanakan. Tentu saja ada pemeriksaan file dan proses lain yang dapat dilakukan sebelum mengeluarkan pernyataan terbuka. Dan Ya (!) Server web sebagian masih tidak aman hingga hari ini sebagai hasilnya.
closetnoc
Apakah URL peka huruf besar kecil tidak ada hubungannya dengan desain web? Benarkah? Argumen dari Otoritas diikuti oleh Argumen oleh Penegasan. Server web yang melewatkan komponen jalur URL kurang lebih secara langsung ke panggilan terbuka adalah konsekuensi dari desain URL yang bukan penyebabnya. Server (atau klien cerdas dalam hal FTP) dapat menyembunyikan sensitivitas kasus sistem file dari pengguna. Yang tidak mereka lakukan adalah keputusan desain.
William Hay
@ WilliamHay Anda harus memperlambat hopper rumput dan membaca kembali apa yang saya tulis. Saya seorang pensiunan insinyur sistem internal menulis komponen OS, tumpukan protokol dan kode router untuk ARPA-Net, dll. Saya bekerja dengan Apache, O'Reilly, dan IIS internal. Argumen FTP Anda tidak tahan karena setidaknya server FTP utama tetap peka terhadap alasan yang sama. Tidak pernah saya mengatakan apa pun tentang desain URL / URI. Tidak pernah saya katakan server web memberikan nilai tanpa pemrosesan. Saya memang mengatakan bahwa layanan OS umumnya digunakan dan bahwa sistem file memerlukan kecocokan yang tepat untuk berhasil.
closetnoc
@ WilliamHay Tolong mengerti bahwa Anda dan saya berpikir untuk tujuan yang berbeda. Yang saya katakan dalam jawaban saya adalah bahwa untuk beberapa OS, panggilan sistem file peka terhadap kasus. Aplikasi yang menggunakan panggilan sistem, dan sebagian besar dilakukan, terbatas pada penegakan aturan OS - dalam hal ini, sensitivitas kasus. Bukan tidak mungkin untuk melewati aturan ini. Sebenarnya ini mungkin agak sepele dalam beberapa kasus meskipun tidak praktis. Aku digunakan untuk rutin bypass sistem file dalam pekerjaan saya ke hard drive menguraikan yang pergi kablooie untuk satu atau alasan lain atau untuk menganalisis berkas internal database, dll
closetnoc
21
  1. URL mengklaim sebagai pencari sumber daya UNIFORM dan dapat menunjuk ke sumber daya yang ada sebelum web. Beberapa di antaranya peka huruf besar-kecil (misalnya banyak server ftp) dan URL harus dapat mewakili sumber daya ini dengan cara yang cukup intuitif.

  2. Ketidakpekaan case membutuhkan lebih banyak pekerjaan ketika mencari kecocokan (baik di OS atau di atasnya).

  3. Jika Anda mendefinisikan URL sebagai server individual yang peka terhadap huruf besar, dapat menerapkannya sebagai tidak peka huruf besar-kecil jika mereka mau. Kebalikannya tidak benar.

  4. Ketidakpekaan case bisa non-sepele dalam konteks internasional: https://en.wikipedia.org/wiki/Dotted_and_dotless_I . Juga RFC1738 diizinkan untuk penggunaan karakter di luar rentang ASCII asalkan mereka dikodekan tetapi tidak menentukan charset. Ini cukup penting untuk sesuatu yang menamakan dirinya web luas DUNIA. Menentukan URL sebagai tidak peka huruf besar-kecil akan membuka banyak ruang untuk bug.

  5. Jika Anda mencoba mengemas banyak data ke dalam URI (mis. Data URI ), Anda dapat mengemas lebih banyak jika huruf besar dan kecil berbeda.

William Hay
sumber
1
Saya cukup yakin URL secara historis terbatas pada ASCII. Jadi internasionalisasi tidak mungkin menjadi alasan asli. Sejarah Unix peka terhadap huruf besar-kecil, OTOH, mungkin memainkan peran besar.
derobert
Sementara hanya sebagian dari ASCII yang dapat digunakan tanpa kode dalam URL RFC1738 secara khusus menyatakan karakter di luar rentang ASCII yang dapat digunakan disandikan. Tanpa menentukan charset, tidak mungkin mengetahui oktet mana yang mewakili karakter yang sama kecuali untuk case. Diperbarui.
William Hay
1
Re # 4: Ini sebenarnya lebih buruk dari itu. Bertitik dan tanpa titik I adalah demonstrasi dari prinsip yang lebih umum bahwa, walaupun semuanya UTF-8 (atau UTF lainnya), Anda tidak dapat menggunakan huruf besar atau huruf kecil dengan benar tanpa mengetahui lokal tempat teks tersebut berada. Di lokal default, huruf latin huruf I huruf kecil ke huruf latin huruf kecil i, yang salah dalam bahasa Turki karena menambahkan titik (tidak ada titik kode "huruf kapital Turki tanpa huruf I"; Anda harus menggunakan kode ASCII titik). Lemparkan dalam perbedaan pengodean, dan ini berubah dari "sangat sulit" menjadi "benar-benar tidak dapat dipecahkan."
Kevin
5

Saya mencuri dari blog New Old Thing kebiasaan mendekati pertanyaan dari bentuk "mengapa ada sesuatu yang terjadi?" dengan pertanyaan tandingan "seperti apa dunia ini, jika bukan itu masalahnya?"

Katakanlah saya mengatur server web untuk melayani sendiri file dokumen saya dari folder sehingga saya bisa membacanya di telepon ketika saya berada di luar kantor. Sekarang, di folder dokumen saya, saya memiliki tiga file, todo.txt, ToDo.txtdan TODO.TXT(aku tahu, tapi itu masuk akal untuk saya ketika saya membuat file).

URL apa yang ingin saya gunakan, untuk mengakses file-file ini? Saya ingin mengaksesnya secara intuitif, menggunakan http://www.example.com/docs/filename.

Katakanlah saya memiliki skrip yang memungkinkan saya menambahkan kontak ke buku alamat saya, yang juga dapat saya lakukan melalui web. Bagaimana seharusnya mengambil parameternya? Nah, saya ingin menggunakannya seperti: http://www.example.com/addcontact.php?name=Tom McHenry von der O'Reilly. Tetapi jika tidak ada cara bagi saya untuk menentukan nama berdasarkan kasus, bagaimana saya melakukannya?

Bagaimana saya membedakan halaman wiki untuk Kucing dan CAT, Teks dan TEKS, lateks dan LaTeX? Halaman disambig, saya kira, tapi saya lebih suka hanya mendapatkan hal yang saya minta.

Tapi semua itu terasa seperti menjawab pertanyaan yang salah.

Pertanyaan saya pikir Anda benar-benar bertanya adalah "Mengapa server web 404 Anda hanya untuk perbedaan kasus, ketika mereka komputer, dirancang untuk membuat hidup lebih sederhana, dan mereka sangat mampu menemukan setidaknya variasi kasus yang paling jelas dalam URL yang saya ketikkan itu akan berfungsi? "

Jawabannya adalah bahwa sementara beberapa situs telah melakukan ini (dan lebih baik, mereka memeriksa kesalahan ketik lainnya juga), tidak ada yang berpikir itu berguna untuk mengubah halaman kesalahan 404 default webserver untuk melakukan itu ... tapi mungkin mereka harus melakukannya?

Dewi Morgan
sumber
1
Beberapa situs menggunakan semacam mekanisme untuk mengonversi kueri apa pun menjadi huruf kecil semua atau sesuatu yang konsisten. Di satu sisi, ini cerdas.
closetnoc
Tidak, seharusnya tidak. Fungsionalitas ini dapat, dan sering kali, ditambahkan ketika diinginkan (misalnya, oleh modul di apache.) Untuk memaksakan perubahan seperti ini sebagai perilaku default - atau lebih buruk, perilaku tidak berubah - akan lebih mengganggu daripada relatif jarang kesempatan di mana seseorang harus mengetik secara manual URL di luar nama host. Untuk contoh yang baik mengapa tidak melakukan ini, ingat kegagalan ketika Network Solutions "memperbaiki" kesalahan domain yang tidak ada dari permintaan DNS publik.
SirNickity
@ SirNickity Tidak ada yang mengusulkan imutabilitas di tingkat mana pun dan halaman kesalahan server web dapat dikonfigurasi pada setiap server web yang pernah saya gunakan; tidak ada yang menyarankan untuk mengganti 404 dengan 30 * kode, tetapi menambahkan daftar tautan saran yang dapat diklik manusia ke halaman kesalahan; nama domain adalah topik dan masalah yang sangat berbeda karena tidak peka huruf besar-kecil, dan dalam konteks keamanan yang berbeda; dan IIS sudah secara otomatis "memperbaiki" (dengan mengabaikan) perbedaan kasus di jalur atau nama file bagian URI.
Dewi Morgan
Sejak 1996, Apache telah membiarkan Anda melakukan ini dengan mod_speling . Sepertinya tidak menjadi hal yang sangat populer untuk dilakukan. Orang-orang Unix / Linux melihat ketidakpekaan huruf besar-besaran sebagai suatu peraturan, ketidakpekaan huruf besar-besaran sebagai pengecualian.
reinierpost
4

Padahal jawaban di atas sudah benar & bagus. Saya ingin menambahkan beberapa poin lagi.

Untuk memahami lebih baik, Anda harus memahami perbedaan mendasar antara server Unix (Linux) Vs Windows. Unix peka huruf besar kecil & Windows bukan huruf besar-kecil.

Protokol HTTP dikembangkan atau mulai diterapkan sekitar tahun 1990. Protokol HTTP dirancang oleh insinyur yang bekerja di lembaga CERN, sebagian besar ilmuwan menggunakan mesin Unix dan bukan Windows.

Sebagian besar ilmuwan akrab dengan Unix, sehingga mereka mungkin telah dipengaruhi oleh sistem file gaya Unix.

Windows server dirilis setelah tahun 2000. jauh sebelum windows server menjadi protokol HTTP populer telah matang dan spesifikasi selesai.

Ini bisa menjadi alasannya.

Mani
sumber
2
"Server Windows dirilis setelah 2000." Tim Windows NT 3.1 tidak akan setuju dengan Anda pada tahun 1993. NT 3.51 pada tahun 1995 mungkin ketika NT mulai menjadi dewasa dan cukup mapan untuk mendukung aplikasi server yang penting bagi bisnis.
CVn
NT 3.51 memiliki antarmuka Win 3.1. Windows tidak benar-benar lepas landas sampai Windows 95 dan butuh NT 4.0 untuk mendapatkan antarmuka yang sama.
Thorbjørn Ravn Andersen
Michael Kjörling, setuju. Biarkan saya memodifikasinya.
Mani
1
@ ThorbjørnRavnAndersen Di pasar server, NT 3.51 cukup berhasil. Di pasar konsumen / prosumer, butuh waktu hingga Windows 2000 (NT 5.0) sebelum garis NT mulai mendapatkan daya tarik yang serius.
CVn
Memang, WorldWideWeb pada awalnya dikembangkan pada sistem berbasis Unix, yang memiliki sistem file case-sensitive, dan sebagian besar URL dipetakan langsung ke file pada sistem file.
reinierpost
4

Bagaimana seharusnya orang membaca "mengapa itu dirancang seperti ini?" pertanyaan? Apakah Anda meminta akun yang secara historis akurat tentang proses pengambilan keputusan, atau apakah Anda bertanya "mengapa ada orang yang merancang seperti ini?"?

Sangat jarang memungkinkan untuk mendapatkan akun yang akurat secara historis. Kadang-kadang ketika keputusan dibuat dalam komite standar ada jejak dokumenter tentang bagaimana perdebatan dilakukan, tetapi pada hari-hari awal keputusan web dibuat dengan tergesa-gesa oleh beberapa individu - dalam hal ini mungkin oleh TimBL sendiri - dan alasannya tidak mungkin telah ditulis. Tetapi TimBL telah mengakui bahwa ia membuat kesalahan dalam desain URL - lihat http://www.dailymail.co.uk/sciencetech/article-1220286/Sir-Tim-Berners-Lee-admits-forward-slashes-web-address -mistake.html

Pada hari-hari awal, URL dipetakan sangat langsung ke nama file, dan file-file tersebut umumnya pada mesin seperti Unix, dan mesin seperti Unix memiliki nama file sensitif. Jadi dugaan saya adalah bahwa kebetulan saja untuk kenyamanan implementasi, dan kegunaan (untuk pengguna akhir) bahkan tidak pernah dipertimbangkan. Lagi-lagi, pada hari-hari awal para pengguna adalah semua programmer Unix.

Michael Kay
sumber
Pengguna akhir juga adalah pengguna Unix (tidak harus pemrogram, tetapi fisikawan berenergi tinggi dan sejenisnya), sehingga mereka juga terbiasa dengan ketidakpekaan kasus.
reinierpost
3

Ini tidak ada hubungannya dengan tempat Anda membeli domain Anda, DNS tidak peka huruf besar-kecil. Tapi, sistem file di server yang Anda gunakan untuk hosting adalah.

Ini sebenarnya bukan masalah dan cukup umum di * nix hosts. Pastikan semua tautan yang Anda tulis di halaman sudah benar dan Anda tidak akan mengalami masalah. Untuk membuatnya lebih mudah, saya sarankan selalu memberi nama halaman Anda dalam huruf kecil semua maka Anda tidak perlu memeriksa nama saat menulis tautan.

adnan3344
sumber
2

Closetnoc benar tentang OS. Beberapa sistem file memperlakukan nama yang sama dengan casing yang berbeda dengan file yang berbeda.

Juga, adakah tujuan / keuntungan nyata untuk memiliki URL peka huruf besar-kecil (yang bertentangan dengan sebagian besar URL yang mengarah ke halaman yang sama tidak peduli kapitalisasi)?

Iya. untuk menghindari masalah duplikat konten.

Misalnya Anda memiliki URL berikut:

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

dan mereka semua menunjuk ke halaman yang sama persis dengan konten yang sama persis, maka Anda akan memiliki duplikat konten, dan saya yakin jika Anda memiliki akun konsol pencarian Google (alat webmaster), Google akan menunjukkan ini kepada Anda.

Apa yang saya sarankan lakukan jika Anda berada dalam situasi itu adalah dengan menggunakan semua URL huruf kecil, kemudian mengarahkan URL dengan setidaknya satu huruf kapital di dalamnya ke versi huruf kecil. Jadi dalam daftar URL di atas, arahkan semua URL ke URL pertama.

Mike
sumber
"Ya. Untuk menghindari masalah konten duplikat." - Tapi yang sebaliknya sepertinya benar? Fakta bahwa URL bisa peka huruf besar-kecil (dan beginilah cara mesin pencari memperlakukannya) menyebabkan masalah duplikat konten yang Anda sebutkan. Jika URL secara universal tidak peka terhadap huruf besar maka tidak akan ada masalah duplikat konten dengan kasus berbeda. page-1akan sama dengan PAGE-1.
MrWhite
Saya pikir konfigurasi server yang buruk adalah apa yang dapat menyebabkan duplikat konten ketika datang ke casing. Misalnya, pernyataan yang RewriteRule ^request-uri$ /targetscript.php [NC]disimpan dalam htaccess akan cocok http://example.com/request-uridan http://example.com/ReQuEsT-Urikarena [NC]menunjukkan bahwa casing tidak masalah ketika mengevaluasi satu ekspresi reguler.
Mike
1

Sensitivitas kasus memang memiliki nilai.

Jika ada 26 huruf, masing-masing dengan kapitalisasi, itu 52 karakter.

4 karakter memiliki kemungkinan kombinasi 52 * 52 * 52 * 52, sama dengan 7311616 kombinasi.

Jika Anda tidak dapat menggunakan huruf besar untuk karakter, jumlah kombinasi adalah 26 * 26 * 26 * 26 = 456976

Kombinasi lebih dari 14 kali lebih banyak untuk 52 karakter daripada untuk 26 karakter. Jadi untuk menyimpan data, Url bisa lebih pendek dan lebih banyak informasi dapat dilewatkan melalui jaringan dengan lebih sedikit data yang ditransfer.

Inilah sebabnya mengapa Anda melihat YouTube menggunakan URL seperti https://www.youtube.com/watch?v=xXxxXxxX

Michael d
sumber