Saya perlu membuat situs web yang akan memiliki artikel, dan saya ingin membuat URL yang ramah untuknya, misalnya URL halaman dengan
Judul: Tes Artikel
harus menjadi: http://www.example.com/articles/article_test
.
Tentu saja saya perlu menghapus beberapa karakter dari judul suka ?
atau #
, tapi saya tidak yakin yang mana yang harus dihapus.
Bisakah seseorang memberi tahu saya karakter apa yang aman untuk disimpan?
url
friendly-url
Paulo
sumber
sumber
Jawaban:
Mengutip bagian 2.3 dari RFC 3986 :
"Karakter yang diizinkan dalam URI tetapi tidak memiliki tujuan khusus disebut tidak terpelihara. Ini termasuk huruf besar dan kecil, angka desimal, tanda hubung, titik, garis bawah, dan tilde."
Perhatikan bahwa RFC 3986 mencantumkan lebih sedikit tanda baca yang dipesan daripada RFC 2396 yang lebih lama .
sumber
ç
danõ
?post-title-with-%C3%A7-and-%C3%B5
, tetapi tetap akan ditampilkan di bilah lokasi pengguna sebagaipost-title-with-ç-and-õ
.Ada dua set karakter yang perlu Anda perhatikan: dicadangkan dan tidak aman .
The dilindungi undang-undang karakter:
Karakter yang umumnya dianggap tidak aman adalah:
Saya mungkin lupa satu atau lebih, yang mengarah pada saya untuk menggemakan jawaban Carl V. Dalam jangka panjang Anda mungkin lebih baik menggunakan "daftar putih" karakter yang diizinkan dan kemudian meng-encode string daripada mencoba untuk tetap mengikuti karakter yang dilarang oleh server dan sistem.
sumber
#
adalah karakter khusus yang digunakan untuk bookmark pada halaman tertentu, dibuat dengan memiliki satu elemen HTML dengan atribut nama yang cocok atau atribut-id (sans-#
simbol).~
itu tidak aman. Apakah Anda yakin begitu?Anda sebaiknya hanya menyimpan beberapa karakter (daftar putih) daripada menghapus karakter tertentu (daftar hitam).
Anda dapat mengizinkan karakter apa pun secara teknis, selama Anda menyandikannya dengan benar. Tetapi, untuk menjawab dengan semangat pertanyaan, Anda harus mengizinkan karakter ini:
Segala sesuatu yang lain memiliki makna yang berpotensi khusus. Misalnya, Anda mungkin berpikir Anda dapat menggunakan +, tetapi dapat diganti dengan spasi. & Juga berbahaya, terutama jika menggunakan beberapa aturan penulisan ulang.
Seperti komentar lainnya, lihat standar dan spesifikasi untuk detail lengkap.
sumber
Selalu Aman
Ini aman (dalam teori / spec), pada dasarnya di mana saja kecuali nama domain.
Persen-enkode apa pun yang tidak terdaftar, dan Anda siap melakukannya.
Terkadang Aman
Hanya aman bila digunakan dalam komponen URL tertentu; gunakan dengan hati-hati.
Tidak pernah aman
Menurut spesifikasi URI (RFC 3986), semua karakter lain harus dikodekan persen. Ini termasuk:
Jika kompatibilitas maksimum menjadi perhatian, batasi rangkaian karakter ke AZ az 0-9 - _.
(dengan periode hanya untuk ekstensi nama file).
Simpan Konteks dalam Pikiran
Meskipun valid per spec, URL masih bisa "tidak aman", tergantung pada konteksnya. Seperti file: /// URL yang berisi karakter nama file tidak valid, atau komponen permintaan yang mengandung "?", "=", Dan "&" saat tidak digunakan sebagai pembatas. Penanganan yang benar untuk kasus-kasus ini umumnya tergantung pada skrip Anda dan dapat diselesaikan, tetapi ini sesuatu yang perlu diingat.
sumber
=
itu tidak aman untuk pertanyaan. Misalnya, FIQL menerima tanda sama dan menggambarkan dirinya sebagai "URI-friendly" dan "dioptimalkan dan dimaksudkan untuk digunakan dalam komponen permintaan". Dalam interpretasi saya, RFC 3986 secara eksplisit memungkinkan "=", "&", "+" dan lainnya dalam kueri.params.toString() // "key=730d67"
" (3) Manual PHP, http-build-query: "Hasilkan string kueri yang disandikan URL. [...] Contoh di atas akan menampilkan:0=foo&1=bar[...]
"(4) J. Starr, Perishable Press:" Saat membuat halaman web, sering kali perlu menambahkan tautan yang memerlukan string kueri parameterisasi. "Melihat RFC3986 - Uniform Resource Identifier (URI): Sintaks Generik , pertanyaan Anda berputar di sekitar komponen jalur URI.
Mengutip bagian 3.3, karakter yang valid untuk URI
segment
adalah tipepchar
:Yang terurai menjadi:
Atau dengan kata lain: Anda dapat menggunakan (non-kontrol-) karakter dari tabel ASCII , kecuali
/
,?
,#
,[
dan]
.Pemahaman ini didukung oleh RFC1738 - Uniform Resource Locators (URL) .
sumber
-
dan;
aman, itulah jawaban saya dan RFC jelas menyatakan.unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
sumber
Dari konteks yang Anda gambarkan, saya menduga bahwa apa yang sebenarnya Anda coba buat adalah sesuatu yang disebut 'SEO slug'. Praktik umum yang paling dikenal untuk mereka adalah:
Jadi, sebagai contoh, sebuah artikel berjudul "Penggunaan! @% $ * Untuk Mewakili Komik Bersumpah" akan mendapatkan seonggok "penggunaan-mewakili-sumpah-komik".
sumber
Format untuk URI didefinisikan dalam RFC 3986 . Lihat bagian 3.3 untuk detailnya.
sumber
Dari perspektif SEO, tanda hubung lebih disukai daripada garis bawah. Konversikan menjadi huruf kecil, singkirkan semua apostrof, lalu ganti semua string karakter non-alfanumerik dengan satu tanda hubung. Pangkas tanda hubung yang berlebihan di awal dan akhir.
sumber
Saya memiliki masalah yang sama, saya ingin memiliki url yang cantik dan sampai pada kesimpulan bahwa saya harus mengizinkan hanya huruf, angka, - dan _ dalam url. Itu baik-baik saja, kemudian saya menulis beberapa regex yang bagus dan saya menyadari bahwa itu mengenali semua karakter UTF8 bukan huruf dalam. Ini tampaknya menjadi masalah yang diketahui untuk mesin .NET regex. JADI saya mendapatkan solusi ini:
sumber
Saya merasa sangat berguna untuk menyandikan url saya ke yang aman ketika saya mengembalikan nilai melalui ajax / php ke url yang kemudian dibaca oleh halaman itu lagi.
Output PHP dengan url encoder untuk karakter khusus &
Semoga ada yang menemukan ekstrak kode kecil saya berguna! :)
sumber
Saya pikir Anda sedang mencari sesuatu seperti "Pengkodean URL" - pengkodean URL sehingga "aman" untuk digunakan di web:
Ini referensi untuk itu. Jika Anda tidak menginginkan karakter khusus, hapus saja yang memerlukan penyandian URL:
http://www.w3schools.com/TAGS/ref_urlencode.asp
sumber
Antara 3-50 karakter. Dapat berisi huruf kecil, angka dan karakter khusus - titik (.), Tanda hubung (-), garis bawah (_) dan dengan kecepatan (@).
sumber