garis miring di variabel url

106

Saya telah menyiapkan aplikasi coldfusion saya untuk memiliki url dinamis di halaman, seperti

www.musicExplained/index.cfm/artist/:VariableName

Namun nama variabel saya terkadang mengandung garis miring, seperti

www.musicExplained/index.cfm/artist/GZA/Genius

Ini menyebabkan masalah, karena aplikasi saya menganggap bahwa garis miring di nama variabel mewakili bagian situs web yang berbeda, album artis. Jadi URL akan gagal.

Saya bertanya-tanya apakah ada cara untuk mencegah hal ini terjadi? Apakah saya perlu menggunakan fungsi yang menggantikan garis miring pada nama variabel dengan karakter lain?

namtax
sumber
4
Itu normal, atau garis miring ke depan. Bukan garis miring terbalik.
Caleb Hearth

Jawaban:

175

Anda harus menghindari garis miring sebagai %2F.

SLaks
sumber
Oke, sepertinya ini ide yang bagus, adakah alasan khusus untuk menggunakan% 2F?
namtax
1
Ini adalah pengkodean URL standar.
SLaks
44
IIS masih mencegat ini sebagai a /dan memutus rute. :(
Piotr Kula
21
Apache menafsirkan ini sebagai / dan memutus rute kecuali direktif AllowEncodedSlashes diaktifkan (secara default dimatikan)
chim
5
Anda dapat menggunakan encodeURIComponentdan decodeURIComponentuntuk tujuan ini.
Keavon
17

Anda dapat dengan mudah mengganti garis miring ke depan /dengan sesuatu seperti garis bawah _seperti Wikipedia yang digunakan untuk spasi. Mengganti karakter khusus dengan garis bawah, dll., Adalah praktik umum.

Caleb Hearth
sumber
4
Ini adalah praktik umum tetapi BUKAN praktik terbaik. Penggunaan karakter yang lolos adalah praktik terbaik karena setiap browser memahami ini, setiap server memahami ini dan setiap pengembang harus belajar melakukannya dengan cara ini. UNderscores BURUK UNTUK SEO juga! Saya hanya mengatakan ini karena saya biasa melakukan ini juga dan belajar dengan cara yang sulit itu datang kembali dan menyengat Anda dengan keras.
Piotr Kula
1
@ppumkin - mengapa menurutmu begitu? menggunakan karakter lolos sebenarnya bukan praktik terbaik karena menghasilkan URL yang tidak ramah pengguna dan mungkin terlihat sangat aneh bagi pengguna non-teknologi. Saya pikir yang terbaik adalah mencoba menjaga URL senyaman mungkin
vsync
Sehubungan dengan UNderscores ARE BAD FOR SEOkomentar. Garis bawah diartikan sebagai garis bawah oleh Google, Tanda Hubung / Tanda Hubung diartikan sebagai spasi. Mengapa? Pembuat kode, banyak pembuat kode menggunakan Google (termasuk Google sendiri sejak awal), jika mereka memperlakukan garis bawah sebagai spasi, Anda tidak akan dapat lagi menemukan foo_bar(kemungkinan sejenis kelas) dalam hasil pencarian. Bla bla ... Kesimpulan: Garis bawah tidak buruk untuk SEO jika Anda memahami cara kerja mesin telusur yang Anda "optimalkan" sebenarnya.
William Isted
8

Anda perlu menghindarinya tetapi jangan hanya menggantinya %2Fsecara manual. Anda bisa menggunakan URLEncoderuntuk ini.

Misalnya URLEncoder.encode(url, "UTF-8")

Kemudian Anda bisa mengatakan

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")
Aniket Thakur
sumber
9
Fungsi URLEncoder tidak ditentukan di beberapa browser, misalnya Chrome. Jadi saya sarankan untuk menggunakan encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp