Apakah trailing slash ditambahkan secara otomatis pada klik URL beranda di browser?

17

Saya menanyakan hal ini karena setiap kali saya mengarahkan tautan ke laman beranda (mis. http://www.example.com), Saya perhatikan bahwa tanda garis miring selalu ditambahkan (seperti yang diamati pada bilah status browser) apakah tautan beranda tersebut berisi atribut href yang diakhiri dengan garis miring atau tidak, tetapi setiap kali saya berada di beranda, URL yang dipajang tidak akan memiliki garis miring.

Saya mencoba memasukkan garis miring ke URL di bilah URL. Dan dengan Firebug diaktifkan, saya perhatikan bahwa situs selalu mengembalikan status 200 OK. Sebuah artikel di sini membahas ini menyatakan bahwa memiliki garis miring pada akhirnya akan menghindari pengalihan 301. Tapi saya tidak melihat pengalihan, bahkan di halaman ini .

Mungkinkah ini fitur browser yang menambahkan slash?

Pertanyaan Melimpah
sumber
Iya. Sebagai contoh, saya pikir Opera menyembunyikan garis miring (dan juga menyembunyikan protokol yang kadang membuatku gila pada dev!) ...
Matt
Apa sebenarnya pertanyaannya di sini? (Atau inti pertanyaannya.) Dan apa situs yang Anda maksud? Jika Anda memeriksa di sini dengan webmaster, misalnya, Anda akan mencatat bahwa di Firefox dan Chrome (saya tidak melakukan pengujian penuh), apa yang Anda jelaskan sejauh garis miring yang ditambahkan tidak terjadi. Tampaknya memaksa slash untuk dihapus jika Anda mencoba dan menambahkannya.
Su '14
@ Su ', saya merujuk ke situs dan bilah status apa pun merujuk ke yang ditampilkan di bagian bawah browser dan bilah URL merujuk ke bilah alamat di bagian atas. Maaf jika saya membuat Anda bingung.
Pertanyaan Overflow
2
@Matt Opera juga menyembunyikan string kueri (sedikit setelah ?di URL) yang merupakan IMO konyol.
DisgruntledGoat

Jawaban:

28

Ya, semua browser utama "menambahkan garis miring" ke permintaan HTTP saat meminta URL domain kosong (mis. Beranda). Ini sebenarnya diperlukan untuk membuat permintaan HTTP valid, yang untuk http://example.com/:

GET / HTTP/1.1
Host: example.com

Perhatikan /(garis miring) di baris pertama - ini adalah URL yang diminta. Tidak valid untuk tidak memiliki apa pun di sini. Dari RFC 2616 :

Perhatikan bahwa jalur absolut tidak boleh kosong; jika tidak ada yang ada dalam URI asli, itu HARUS diberikan sebagai "/" (root server).

Anda perlu melihat permintaan HTTP yang dibuat browser ke server. URL yang ditampilkan di "bilah status browser", atau bahkan URL di bilah alamat bisa berbeda - lebih ramah pengguna. Google Chrome tidak menambahkan garis miring di bilah status, meskipun garis miring ada dalam permintaan.

Tidak ada redirect 301 terjadi jika Anda menentukan http://example.com(tidak ada garis miring) karena browser mengoreksi permintaan HTTP sebelum dibuat.

Perhatikan bahwa ini berbeda dengan garis miring yang ditambahkan ke akhir URL ketika ada jalur / direktori. misalnya. http://example.com/directory/. Artikel yang Anda tautkan tampaknya memperlakukan keduanya sama dan tampaknya bukan IMO yang sepenuhnya benar. Jika Anda meminta http://example.com/directory(tanpa garis miring) maka browser tidak menambahkan garis miring dan ya, sebagian besar server akan diarahkan ke http://example.com/directory/(garis miring) - tetapi ini tergantung pada server; itu bisa pecah! Di Apache, misalnya, ini tergantung pada DirectorySlasharahan yang ditetapkan on.

TuanWhite
sumber
Untuk menambah jawaban, setiap kali Anda menautkan ke beranda Anda tambahkan trailing slash untuk menghemat sumber daya server.
Anagio
5
@Anagio Saya pikir Anda tidak mengerti jawabannya. Anda tidak akan menghemat sumber daya server sama sekali karena tidak ada redirect. Domain dengan dan tanpa garis miring 100% identik. Dengan kata lain, sama sekali tidak ada cara untuk mengembalikan konten yang berbeda untuk masing-masing (yang dapat Anda lakukan dengan URL direktori).
DisgruntledGoat
1
@DisgruntledGoat jika Anda meninggalkan trailing slash dan pengalihan server kemudian menambahkan slash trailing pada tautan akan menyelamatkan server dari keharusan memuat ulang ke halaman. Itu saja yang saya maksudkan
Anagio
5
@Anagio Artikel itu adalah tentang trailing slash untuk direktori , sedangkan pertanyaan ini adalah tentang trailing slash pada domain saja . Seperti yang dinyatakan oleh jawaban di atas, tidak ada perbedaan, karena tautan ke example.comatau example.com/keduanya memerlukan permintaan yang sama persis ke server.
DisgruntledGoat
3
... karena browser akan "memperbaiki" ini.
unor