Kapan saya harus menggunakan garis miring di URL saya?

283

Kapan seharusnya trailing slash digunakan dalam URL? Misalnya - apakah URL saya akan suka /about-us/atau suka /about-us?

Saya sepenuhnya menyadari masalah yang berhubungan dengan SEO - duplikat konten dan hal kanonik; Saya mencoba mencari tahu mana yang harus saya gunakan dalam konteks melayani halaman dengan benar .

Misalnya, kolega saya berpikir bahwa garis miring pada akhirnya berarti "folder" - "direktori", jadi ini bukan gaya yang benar. Tapi saya pikir tanpa slash pada akhirnya - itu juga tidak sepenuhnya benar, karena hampir terlihat seperti folder, tetapi tidak dan itu bukan file normal juga, tetapi nama file tanpa ekstensi.

Apakah ada cara yang tepat untuk mengetahui mana yang harus digunakan?

Denis
sumber
Trailing slash, tapi menurut saya itu terutama estetika. Lihat dan rasakan.
Eric Herlitz
3
Pertanyaan yang sama pada Pro Webmaster: Apakah ada bedanya jika jalur URL Anda berakhir dengan garis miring atau tidak?
Stephen Ostermiller
4
Pertanyaan ini diajukan sebagai salah satu pilihan , dan dengan demikian tampaknya menjadi topik yang tidak didasarkan pada pendapat . Namun, seperti yang ditunjukkan oleh jawaban saya , sebenarnya mengajukan pertanyaan ini sebagai pilihan adalah kesalahan: ini adalah masalah XY, dan pertanyaan "nyata" yang mendasarinya memiliki jawaban teknis yang tepat, dan dengan demikian tidak didasarkan pada pendapat .
Raedwald
Pertanyaan tentang jenis URL apa yang disukai Google yang tidak terkait dengan pemrograman (seperti yang disebutkan dalam tag wiki ) dan di luar topik untuk Stackoverflow.
Quentin
Saya telah melakukan beberapa pengeditan untuk pertanyaan Anda, periksa kembali ketika Anda memiliki kesempatan untuk melakukannya. Terima kasih :)
Pos Tim

Jawaban:

131

Menurut pendapat pribadi saya, garis miring adalah penyalahgunaan.

Pada dasarnya format URL berasal dari format file dan folder UNIX yang sama, kemudian, pada sistem DOS, dan akhirnya, diadaptasi untuk web.

URL khas untuk buku ini pada sistem operasi mirip Unix adalah path file seperti file: ///home/username/RomeoAndJuliet.pdf, mengidentifikasi buku elektronik yang disimpan dalam file di hard disk lokal.

Sumber: Wikipedia: Uniform Resource Identifier

Sumber lain yang baik untuk dibaca: Wikipedia: Skema URI

Menurut RFC 1738, yang mendefinisikan URL pada tahun 1994, ketika sumber daya berisi referensi ke sumber daya lain, mereka dapat menggunakan tautan relatif untuk menentukan lokasi sumber daya kedua seolah mengatakan, "di tempat yang sama dengan yang ini kecuali dengan kerabat berikut jalan ". Lebih lanjut dikatakan bahwa URL relatif seperti itu tergantung pada URL asli yang mengandung struktur hierarkis yang menjadi dasar tautan relatif tersebut, dan bahwa skema ftp, http, dan URL file adalah contoh dari beberapa yang dapat dianggap hierarkis, dengan komponen hierarki dipisahkan oleh "/".

Sumber: Wikipedia Resource Resource Locator (URL)

Juga:

Itulah pertanyaan yang sering kita dengar. Maju ke jawaban! Secara historis, URL untuk slash trailing biasanya menunjukkan direktori, dan slash trailing untuk menunjukkan file:

http://example.com/foo/ (dengan trailing slash, secara konvensional direktori)

http://example.com/foo (tanpa trailing slash, secara konvensional file)

Sumber: Google WebMaster Central Blog - Untuk memotong atau tidak memotong

Akhirnya:

  1. Garis miring di akhir URL membuat alamat terlihat "cantik".

  2. URL tanpa garis miring di bagian akhir dan tanpa ekstensi terlihat agak "aneh".

  3. Anda tidak akan pernah memberi nama file CSS Anda (misalnya) http://www.sample.com/stylesheet/ bukan?

TETAPI saya menjadi pendukung praktik terbaik web terlepas dari lingkungan. Ini bisa menjadi miring dan tidak jelas, seperti yang Anda katakan tentang URL tanpa ext.

Demensik
sumber
1
Ini aneh, Anda tidak dapat memberi nama file "stylesheet /" - dan slash atau tanpa slash adalah sumber daya yang sama sekali berbeda di server, tidak peduli bagaimana penampilan URL
nico gawenda
10
@nicogawenda, .htaccess dapat melakukan segala macam keajaiban;) CSS Anda mungkin sebenarnya adalah file php!
rmorse
4
Server web sering diatur secara default untuk melayani index.html(atau file dengan nama yang sama) ketika direktori diakses, begitu /foo/juga /foo/index.htmltanpa kekacauan tambahan. Selain itu, di masa lalu, peramban akan ditambahkan /ke nama domain, tetapi mereka (Firefox, Chrome, Opera) telah berubah untuk menghilangkan /saat mengakses beranda.
0b10011
4
Saya setuju dengan @bfrohs. Tentunya halaman default untuk direktori bertentangan dengan prinsip ini. Jika kita ingin menegakkan 'trailing slash = direktori', maka tentu saja semua url yang mengarah pada direktori harus mengembalikan daftar direktori atau respons http 403 terlarang.
Marvin
11
Saya tidak yakin apakah poin # 1 dan 2 di bagian "Akhirnya" masih akurat. Selama bertahun-tahun sejak ini awalnya ditulis, rasanya telah berubah. Saya belum mempelajari ini secara rinci, tetapi tampaknya di situs web yang lebih baru, lebih umum dan "lebih cantik" untuk menghilangkan garis miring.
speedplane
172

Ini bukan masalah preferensi. /basedan /base/memiliki semantik yang berbeda. Dalam banyak kasus, perbedaannya tidak penting. Tetapi penting ketika ada URL relatif.

  • childrelatif terhadap /base/adalah /base/child.
  • childrelatif terhadap /baseadalah (mungkin secara mengejutkan) /child.
Raedwald
sumber
5
Artikel bermanfaat yang masuk ke kedalaman tentang ini: cdivilly.wordpress.com/2014/03/11/…
Hephaestus
3
Ya, saya pikir ini, bersama dengan SEO, adalah hal yang paling penting untuk pertanyaan ini.
user2875289
Baru saja melewati masalah ini saat menggunakan .Net Uri.MakeRelativeUri. Hasil mencerminkan apa yang Anda katakan. Saya memperbaiki masalah ini dengan menambahkan garis miring ke pangkalan saya Uri.
julealgon
61

Saya selalu terkejut dengan penggunaan ekstensif garis miring pada URL non-direktori (antara lain WordPress). Ini benar-benar tidak boleh menjadi perdebatan baik-atau karena menempatkan tebasan setelah sumber daya secara semantik salah. Web dirancang untuk memberikan sumber daya yang dapat dialamatkan, dan alamat itu - URL - dirancang untuk meniru hierarki sistem file * nix-style. Dalam konteks itu:

  • Slash selalu menunjukkan direktori, bukan file.
  • File dapat dinamai apa saja (dengan atau tanpa ekstensi), tetapi tidak dapat berisi atau diakhiri dengan garis miring.

Dengan menggunakan panduan ini, salah jika memangkas sumber daya non-direktori.

Yarin
sumber
50
"garis miring setelah direktori, bukan setelah sumber daya": URL tidak merujuk pada dua jenis hal, "sumber daya" dan "direktori"; mereka merujuk pada satu jenis hal: sumber daya. Petunjuknya ada di R dari URL.
Raedwald
31
Dan segala sesuatu dalam sistem file * nix adalah file, tetapi direktori masih ada. Apa maksudmu
Yarin
6
Baik itu dilayani oleh file atau direktori secara internal, apa yang dilihat pengguna hanyalah halaman web. Dan example.com/about sebenarnya bisa membaca dari example.com/about/index.html .
musiphil
1
@ DavidRR: Anda benar. Dan browser perlu redirect karena resolusi nama harus terjadi dari dalam directory(jika tidak, image.pngdalam http://hostname/directoryakan menunjuk ke http://hostname/image.png). Saya hanya mengatakan bahwa perbedaan antara file dan direktori mungkin tidak terlalu penting dari sudut pandang pengguna.
musiphil
2
Saya setuju dengan hasil Anda, tetapi saya tidak yakin kami harus merancang sistem URL kami untuk meniru sistem file * nix-style. Itu mungkin awalnya melayani tujuan, tetapi sekarang jauh lebih sedikit.
speedplane
27

Itu sebenarnya bukan masalah estetika, tetapi memang perbedaan teknis. Direktori memikirkannya benar-benar benar dan cukup menjelaskan semuanya. Mari kita selesaikan:

Anda kembali ke zaman batu sekarang atau hanya melayani halaman statis

Anda memiliki struktur direktori tetap di server web Anda dan hanya file statis seperti gambar, html, dan sebagainya - tanpa skrip sisi server atau apa pun.

Browser meminta /index.htm, itu ada dan dikirimkan ke klien. Kemudian Anda memiliki banyak - katakanlah - film DVD ditinjau dan halaman html untuk masing-masing dalam /dvd/direktori. Sekarang seseorang meminta /dvd/adams_apples.htmdan dikirimkan karena ada di sana.

Pada suatu hari, seseorang hanya meminta /dvd/- yang merupakan direktori dan server berusaha mencari tahu apa yang harus disampaikan. Selain pembatasan akses dan sebagainya ada dua kemungkinan: Tampilkan pengguna isi direktori (Saya yakin Anda sudah melihat ini di suatu tempat) atau menunjukkan file default (di Apache itu adalah: DirectoryIndex: sets the file that Apache will serve if a directory is requested.)

Sejauh ini bagus, ini adalah kasus yang diharapkan. Itu sudah menunjukkan perbedaan dalam penanganan, jadi mari kita masuk ke dalamnya:

Pada 5:34 Anda membuat kesalahan mengunggah file Anda

(Yang omong-omong benar-benar dapat dimengerti.) Jadi, Anda melakukan sesuatu yang sepenuhnya salah dan bukannya mengunggah /dvd/the_big_lebowski.htmAnda mengunggah file itu sebagai dvd(tanpa ekstensi) ke /.

Seseorang mem-bookmark daftar /dvd/direktori Anda (tentu saja Anda tidak ingin membuat dan selalu memperbarui yang bagus itu index.htm) dan sedang mengunjungi situs web Anda. Konten direktori dikirimkan - semua baik-baik saja.

Seseorang mendengar daftar Anda dan sedang mengetik /dvd. Dan sekarang sudah kacau. Alih-alih daftar direktori DVD Anda, server menemukan file dengan nama itu dan memberikan file Big Lebowski Anda.

Jadi, Anda menghapus file itu dan memberi tahu orang itu untuk memuat ulang halaman tersebut. Server Anda mencari /dvdfile, tetapi hilang. Sebagian besar server kemudian akan melihat bahwa ada direktori dengan nama itu dan memberi tahu klien bahwa yang dicari memang ada di tempat lain. Responsnya kemungkinan besar adalah:

Status Code:301 Moved Permanently dengan Location: http://[...]/dvd/

Jadi, sama sekali mengabaikan apa yang Anda pikirkan tentang direktori atau file, server hanya dapat menangani hal-hal seperti itu dan - kecuali jika dikatakan berbeda - memutuskan untuk Anda tentang arti "slash or not".

Akhirnya setelah menerima respons ini, klien memuat /dvd/dan semuanya baik-baik saja.

Itu baik? Tidak.

"Baik-baik saja" tidak cukup baik untukmu

Anda memiliki beberapa halaman dinamis di mana semuanya dilewatkan ke /index.phpdan diproses. Semuanya bekerja cukup baik sampai sekarang, tetapi semuanya mulai terasa lebih lambat dan Anda menyelidikinya.

Segera, Anda akan melihat bahwa /dvd/listmelakukan hal yang persis sama: Mengarahkan kembali /dvd/list/yang kemudian diterjemahkan secara internal index.php?controller=dvd&action=list. Satu permintaan tambahan - tetapi bahkan lebih buruk! customer/loginpengalihan customer/login/yang pada gilirannya mengarahkan ke URL HTTPS dari customer/login/. Anda akhirnya memiliki banyak pengalihan HTTP yang tidak perlu (= permintaan tambahan) yang membuat pengalaman pengguna lebih lambat.

Kemungkinan besar Anda memiliki indeks direktori default di sini juga: index.php?controller=dvdtanpa actionhanya memuat secara internal index.php?controller=dvd&action=list.

Ringkasan:

  • Jika berakhir dengan /itu tidak pernah bisa menjadi file. Tidak ada menebak server.

  • Slash atau tanpa slash adalah arti yang sama sekali berbeda. Ada perbedaan teknis / sumber daya antara "slash or no slash", dan Anda harus menyadarinya dan menggunakannya sesuai. Hanya karena server kemungkinan besar memuat /dvd/index.htm- atau memuat skrip yang benar - ketika Anda mengatakan /dvd: Itu berhasil, tetapi bukan karena Anda membuat permintaan yang tepat. Yang seharusnya /dvd/.

  • Menghilangkan garis miring bahkan jika Anda memang bermaksud memotong versi memberi Anda penalti permintaan HTTP tambahan. Yang selalu buruk (pikirkan latensi seluler) dan memiliki bobot lebih dari "URL cantik" - terutama karena perayap tidak sebodoh yang diyakini atau ingin Anda yakini oleh SEO;)

nico gawenda
sumber
2
Jadi, dalam ringkasan, apakah Anda semua untuk menambahkan garis miring di akhir? :)
Denis
2
Saya semua untuk menggunakannya ketika Anda bersungguh-sungguh;) Misalnya berbicara tentang controller dan tindakan itu akan menjadi: Controllers harus diakhiri dengan garis miring. Saat Anda mereferensikan file atau tindakan, hilangkan slash
nico gawenda
Tunggu sebentar, mengapa Anda mengabaikan tebasan untuk suatu tindakan? Sebagai contoh Anda, bukankah itu akan menghasilkan permintaan pengalihan ekstra? Maksud saya, mungkin server Anda cukup pintar untuk mengenali tindakan pengontrol dan tidak akan benar-benar mengarahkan ulang untuk mencari file atau direktori dalam kasus itu, tetapi masih bertentangan dengan contoh Anda bukan?
Adam Goodwin
7
Saya tidak mengerti teladan Anda. Filesystem apa yang memungkinkan direktori dan file biasa lainnya dengan nama yang sama ( dvd)?
musiphil
19

Saat Anda membuat URL Anda /about-us/(dengan trailing slash), mudah untuk memulai dengan satu file index.htmldan kemudian mengembangkannya dan menambahkan lebih banyak file (mis. our-CEO-john-doe.jpg) Atau bahkan membangun hierarki di bawahnya (mis /about-us/company/. /about-us/products/, Dll.) Sesuai kebutuhan, tanpa mengubah URL yang diterbitkan . Ini memberi Anda fleksibilitas besar.

musiphil
sumber
9
Maaf saya tidak mengerti. jika saya mulai dengan /about-usatau /about-us/saya masih perlu mengubah URL yang diterbitkan dalam kedua kasus jika saya memperluas direktori. file baru /about-us/new-file.htmldalam kedua kasus !! Apa yang kulewatkan di sini?
Akuntan
2
@Accountant Saya pikir OP mungkin berpikir bahwa jika Anda menerbitkan "/ tentang-kita" tanpa garis miring maka Anda tidak dapat menambahkan sub-sumber daya menggunakan jalur relatif. Ketika Anda tidak memiliki trailing slash, peramban akan percaya bahwa referensi ke "ceo.jpg" di halaman tentang akan hidup di root domain Anda dan akan meminta example.com/ceo.jpg. Dengan slash, browser akan meminta example.com/about-us/ceo.jpg dan Anda dapat merutekan seluruh pohon folder secara statis untuk situs Anda saat Anda memperluas.
daw
1
FYI - Saya tidak percaya semua hal di atas benar - Mengapa tidak ada /about-usdan /about-us/company? Dalam hal melayani file, baik Apache dan IIS dapat menangani ini dengan baik, jadi saya tidak setuju.
sean2078
1
@ sean2078 Ya, tetapi jika, dari /about-ustautan yang ingin Anda tuju /about-us/company, Anda harus menggunakan href="https://stackoverflow.com/about-us/company"atau href="./company"(tidak yakin tentang itu). Jika Anda berada di /about-us/, meskipun, itu sederhana: href="company".
Adowrath
11

Jawaban lain di sini tampaknya lebih suka menghilangkan garis miring. Ada satu kasus di mana garis miring akan membantu dengan optimasi mesin pencari (SEO). Itu adalah kasus bahwa dokumen Anda memiliki apa yang tampaknya menjadi ekstensi file yang bukan .html. Ini menjadi masalah dengan situs yang menilai situs web. Mereka mungkin memilih antara dua url ini:

  • http://mysite.example.com/rated.example.com
  • http://mysite.example.com/rated.example.com/

Dalam kasus seperti itu, saya akan memilih yang dengan garis miring . Itu karena .comekstensi adalah ekstensi untuk file perintah yang dapat dieksekusi Windows. Mesin pencari dan pemeriksa virus sering tidak menyukai URL yang muncul yang mengandung malware yang didistribusikan melalui mekanisme tersebut. Garis miring tampaknya mengurangi kekhawatiran, memungkinkan halaman untuk peringkat di mesin pencari dan oleh pemeriksa virus.

Jika URL Anda tidak ada .di bagian file, maka saya akan merekomendasikan menghilangkan garis miring untuk kesederhanaan.

Stephen Ostermiller
sumber
Tidak ada mesin pencari yang sebodoh itu. Jawaban ini murni spekulasi.
Navin
1
Saya sebenarnya melihat masalah ini dengan Google. Itu beberapa tahun yang lalu, jadi saya tidak yakin apakah itu masih akan terjadi hari ini.
Stephen Ostermiller
Huh, itu titik data yang bagus. Meskipun kita masih belum tahu apakah itu disebabkan oleh sesuatu yang lain.
Navin
10

Siapa bilang nama file perlu ekstensi ?? lihat mesin * nix kapan-kapan ...
Saya setuju dengan teman Anda, tanpa garis miring.

Aaron Gage
sumber
3

Dari perspektif SEO, memilih apakah akan menyertakan garis miring di akhir URL tidak relevan. Saat ini, sudah umum untuk melihat contoh keduanya di web. Situs tidak akan dihukum, atau pilihan ini akan memengaruhi peringkat mesin pencari situs web Anda atau pertimbangan SEO lainnya.

Cukup pilih konvensi penamaan URL yang Anda inginkan, dan sertakan tag meta kanonik di <head>bagian setiap halaman web.

Mesin pencari dapat mempertimbangkan satu halaman web sebagai dua URL duplikat yang terpisah ketika mereka menjumpainya dengan dan tanpa garis miring, yaitu example.com/about-us/dan example.com/about-us.

Ini adalah praktik terbaik untuk memasukkan meta tag kanonik pada setiap halaman karena Anda tidak dapat mengontrol bagaimana situs lain menautkan ke URL Anda.

Tag kanonik terlihat seperti ini: <link rel="canonical" href="https://example.com/about-us" />. Menggunakan tag meta kanonik memastikan bahwa mesin pencari hanya menghitung masing-masing URL Anda sekali, terlepas dari apakah situs web lain menyertakan garis miring ketika mereka terhubung ke situs Anda.

kerusuhan
sumber