Di URL, untuk apa //? [Tutup]

39

Biasanya, ketika saya melihat //, biasanya mengikuti beberapa awalan protokol seperti http:atau ftp:. Saya belum pernah melihatnya ditempatkan di tempat lain. Sebagai contoh,

http://www.google.com/

adalah URL khas.

Namun, saya menemukan dua sintaks berikut untuk menghasilkan versi berbeda dari situs yang sama,

http://www.weather.com/

http://www.weather.com//

Saya akan berpikir bahwa di //mana saja selain spesifikasi protokol tidak valid. Yang mengejutkan saya, saya salah. Ada apa dengan ending //yang membuat versi berbeda dari situs yang sama?

EDIT:

Seseorang di situs itu pasti telah menangkap angin dari yang lain karena kedua tautan sekarang mendarat di halaman yang sama.

Chad Harrison
sumber
9
Jika saya harus menebak, semua yang Anda lakukan adalah melihat situs yang sama dua kali tetapi satu dengan tambahan / pada akhirnya adalah melanggar CSS atau apa pun yang anak-anak gunakan untuk memformat situs web mereka dengan. :)
Mark Allen
webmasters.stackexchange.com mungkin lebih cocok untuk pertanyaan ini.
Mehper C. Palavuzlar
1
@ MehperC.Palavuzlar Kalau dipikir-pikir, ya. Tetapi pada saat pertanyaan itu, saya pikir cakupannya agak lebih luas dari apa itu.
Chad Harrison
@MarkAllen Nah yang menarik untuk dicatat bahwa menggunakan ///atau ////pada akhir URL yang dihasilkan situs yang sama seperti /di mana // melakukan mengakibatkan sesuatu yang berbeda.
Chad Harrison
Sementara itu double backslash (\\) umumnya terlihat di Konvensi Penamaan Seragam Windows, misalnya,\\HostName[@Port]\SharedFolder\Resource
William C

Jawaban:

67

Yang utama //adalah bagian dari sintaks URL. Penemu web di seluruh dunia telah meminta maaf atas kesalahan itu .

Sungguh, jika dipikir-pikir, itu tidak perlu tebasan ganda. Saya bisa mendesainnya agar tidak memiliki double-slash. - Sir Tim Berners-Lee, penemu web di seluruh dunia


Adapun trailing //, itu benar-benar bukan tebasan ganda. Slash pertama memisahkan nama host dari path. Slash terakhir adalah path. Server web dapat, jika mau, memperlakukan jalur /berbeda dari jalur kosong, dan ternyata weather.com melakukannya. Mengenai apakah ini kebetulan atau disengaja, Anda harus bertanya kepada mereka tentang hal itu.

David Schwartz
sumber
Itu menjadi lengkap karena, karena Anda dapat mengonfigurasi server web untuk mencari indeks selain hanya root web! Topi saya untuk Anda tuan baik.
Chad Harrison
Apakah Anda mengatakan http://example.comdapat diperlakukan secara berbeda http://example.com/? Saya tidak berpikir itu adalah kasus dengan tebasan pertama.
DisgruntledGoat
1
@DisgruntledGoat Anda bisa , ya, menggunakan beberapa .htaccessaturan. Tapi Anda mungkin tidak seharusnya.
Matius
1
Anda tidak dapat memperlakukan http://example.comberbeda dari http://example.com/di server web, karena keduanya memiliki jalur kosong. Anda dapat memperlakukan mereka secara berbeda di browser.
David Schwartz
3
Neverminding header host, nol atau satu garis miring diterjemahkan ke permintaan http yang sama GET / HTTP/1.1:: tools.ietf.org/html/rfc2616.html#section-3.2.3
SingleNegationElimination
19

Baru-baru ini, dapat dikatakan bahwa tebasan ganda memang memiliki peran. Google merekomendasikan (untuk menghindari secara tidak sengaja menyebut konten tidak aman dari halaman yang aman, misalnya) menghilangkan protokol dari sumber daya yang disematkan (stylesheet, js dll), seperti ini

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>

Jadi sekarang jelas bahwa URL tanpa protokol seperti itu adalah URL yang sepenuhnya memenuhi syarat dan bukan URL relatif (yang akan dimulai dengan satu garis miring).

DaveP
sumber
1
Gaya ini disebut URL / URI "protokol relatif". Ada pertanyaan serupa di SO.
hippietrail
1
Tidak ada lagi rekomendasi. Lihat juga paulirish.com/2010/the-protocol-relative-url
lorond
13

Untuk benar-benar menjawab pertanyaan, spesifikasi asli memberi protokol http:(atau mungkin ftp:, gopher:, mailto:, news:, telnet:, wais:, file:atau prospero:) maka // untuk menunjukkan bahwa sintaks Uniform Resource Locator (URL) sedang digunakan, maka host (opsional diawali dengan user:password@) maka alamat benar dimulai dengan yang lain /. Ini diusulkan dalam RFC 1738 .

Ketika internet berevolusi, http:menjadi protokol yang dominan sehingga browser sekarang mengasumsikan bahwa awalan http://harus ditambahkan jika tidak ada.

StarNamer
sumber
3
Jawaban Anda tampaknya menunjukkan bahwa sesuatu selain URL dapat digunakan dengan protokol pada satu titik, dan akan menggunakan sesuatu selain //untuk menunjukkan bahwa itu sedang digunakan ... Begitukah?
Izkata
3
@Izkata Di akhir tahun 80-an dan 90-an, ketika internet mulai, ada beberapa format berbeda yang disarankan untuk berbagai item. URL adalah / adalah bagian dari URN (lihat RFC 3305) dan ini dapat memiliki berbagai format, misalnya isbn:1-23-456789-12-3. Dalam praktiknya, http:definisi yang lainnya adalah URL. RFC hanyalah proposal dan seringkali memungkinkan ekstensi yang tidak pernah terwujud. Pada satu titik, Tim Berners-Lee mengatakan bahwa //itu untuk 'subnet' (mis. http:/govnet/whitehouse.gov). Gagasan ini tidak pernah digunakan, tetapi '//' tetap seperti yang diharapkan oleh banyak kode dan memeriksanya.
StarNamer
1
@Izkata: Anda mungkin tidak akan melihat URN non-URL yang digunakan dengan protokol komunikasi; // untuk apa itu. Ini menunjukkan bahwa protokol sedang digunakan untuk mengakses lokasi jaringan (mungkin jauh) di mana sumber daya dapat ditemukan. Ada yang banyak ini GUCI lain yang memiliki bagian-bagian data lain dan tidak menggunakan // (browser Anda mungkin mengenali "mailto:", misalnya). Lihat: en.wikipedia.org/wiki/URI_scheme
KutuluMike
@MichaelEdenfield Nah, itu yang saya ingin tahu sekarang. Pernahkah ada titik di mana itu dimaksudkan untuk digunakan secara berbeda - sesuatu yang berbeda yang dapat berkomunikasi melalui protokol yang sama. Sebagai contoh kasar, mungkinkah niat pada suatu waktu untuk http://www.google.com/dan http:%/74.125.225.97/keduanya valid, dan //menunjukkan nama host sementara hal lain seperti %/menunjukkan alamat IP?
Izkata
1
Saya kira tidak. Setidaknya saya belum pernah melihat draft dokumen / contoh / dll yang memiliki skema heirarki alternatif untuk URL. Kesan saya selalu bahwa TBL hanya ingin sesuatu untuk membuatnya jelas bahwa URL menunjuk ke sumber daya yang sebenarnya (dan bukan data yang sewenang-wenang), dan menggunakan // membuat segala sesuatu tampak seperti file-cukup. Setiap gaya URN lain yang pernah saya lihat tidak memiliki awalan khusus di bagian datanya. Beberapa protokol mengizinkannya (saya pikir telnet dan gopher, misalnya) tetapi saya belum pernah melihat yang seperti itu untuk http (s).
KutuluMike
1

Saya ingin menambahkan jawaban yang diterima David:

Meskipun permintaan maaf dari penemu web saya pikir sintaks double-slash melayani tujuan penting: untuk menonjol secara visual. Garis miring ganda memungkinkan perbedaan visual yang mudah dari URL dalam teks tanpa hyperlink. Ketika Anda melihat garis miring ganda, Anda langsung berpikir itu dapat dimasukkan di jendela browser, mirip dengan bagaimana Anda berpikir sebuah teks mengandung@dapat digunakan untuk mengirim email. Itu sangat penting selama fase transisi ke web di mana protokol era itu (ftp, telnet, gopher) memiliki gagasan aneh mereka sendiri untuk mewakili alamat server atau jalur sumber daya, jarang keduanya. Sebagian besar masalah yang terkait dengan garis miring ganda masih ada, karena garis miring ganda adalah bagian URL yang paling samar, pikirkan tentang nomor port, persen penyandian, dan sensitivitas huruf besar-kecil. Tetapi memiliki URL seperti http: something.com dapat dengan mudah dikacaukan dengan contoh saya di sini: something.com. Lihatlah http: // di sisi lain, bagaimana bersinar seperti berlian. Slash ganda telah menjadi bagian penting dari simbolisme Web dan saya percaya itu mempercepat laju adopsi juga, bahkan jika itu tidak disengaja.

Mereka juga mungkin membuat pekerjaan AmigaOS lebih mudah untuk membedakan antara nama file dan URL karena AmigaOS menggunakan sintaks jalur file volume:path/to/destination. :)

Sedat Kapanoglu
sumber