dấu gạch chéo trong các biến url


106

Tôi đã thiết lập ứng dụng coldfusion của mình để có các url động trên trang, chẳng hạn như

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

Tuy nhiên, tên biến của tôi đôi khi sẽ chứa dấu gạch chéo, chẳng hạn như

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

Điều này gây ra sự cố, vì ứng dụng của tôi cho rằng dấu gạch chéo trong tên biến đại diện cho một phần khác của trang web, album nghệ sĩ. Vì vậy, URL sẽ bị lỗi.

Tôi tự hỏi liệu có cách nào để ngăn điều này xảy ra không? Tôi có cần sử dụng một hàm thay thế dấu gạch chéo trong tên biến bằng một ký tự khác không?


4
Đó là những dấu gạch chéo bình thường, hoặc về phía trước. Không phải dấu gạch chéo ngược.
Caleb Hearth

Câu trả lời:


175

Bạn cần phải thoát khỏi các dấu gạch chéo như %2F.


Ok, đây có vẻ là một ý kiến ​​hay, có lý do cụ thể nào để sử dụng% 2F không?
namtax

1
Đây là mã hóa URL tiêu chuẩn.
SLaks

44
IIS vẫn chặn điều này như một /và phá vỡ lộ trình. :(
Piotr Kula,

21
Apache giải thích điều này như một / và phá vỡ các tuyến đường trừ khi AllowEncodedSlashes chỉ được bật (mặc định nó tắt)
chim

5
Bạn có thể sử dụng encodeURIComponentdecodeURIComponentcho mục đích này.
Keavon

17

Bạn có thể dễ dàng thay thế các dấu gạch chéo về phía trước /bằng một cái gì đó giống như một dấu gạch dưới, _chẳng hạn như Wikipedia sử dụng cho khoảng trắng. Thay thế các ký tự đặc biệt bằng dấu gạch dưới, v.v., là một thực tế phổ biến.


4
Đó là thực hành phổ biến nhưng nó KHÔNG phải là thực hành tốt nhất. Sử dụng các ký tự thoát là phương pháp hay nhất vì mọi trình duyệt đều hiểu điều này, mọi máy chủ đều hiểu điều này và mọi nhà phát triển nên học cách làm theo cách này. UNderscores cũng XẤU CHO SEO! Tôi chỉ đang nói điều này như tôi đã từng làm điều này và đã học được cách khó khăn nó quay trở lại và đốt bạn khó khăn.
Piotr Kula

1
@ppumkin - tại sao bạn lại nghĩ như vậy? sử dụng các ký tự thoát thực sự không phải là phương pháp hay nhất vì nó tạo ra các URL không thân thiện với người dùng và có thể trông rất lạ đối với người dùng không am hiểu về công nghệ. Tôi nghĩ tốt nhất nên cố gắng giữ các URL hợp lý nhất có thể
vsync

Liên quan đến UNderscores ARE BAD FOR SEOnhận xét. Dấu gạch dưới được Google hiểu là dấu gạch dưới, Dấu gạch ngang / Dấu gạch nối được hiểu là dấu cách. Tại sao? Người viết mã, rất nhiều người viết mã sử dụng Google (kể cả chính Google từ những ngày đầu), nếu họ coi dấu gạch dưới là khoảng trắng mà bạn sẽ không thể tìm thấy nữa foo_bar(có thể là một loại nào đó) trong kết quả tìm kiếm. Blah blah ... Kết luận: Điểm gạch dưới không có hại cho SEO nếu bạn hiểu cách công cụ tìm kiếm bạn đang "tối ưu hóa" thực sự hoạt động.
William Isted

8

Bạn cần phải thoát khỏi những điều đó nhưng không chỉ thay thế nó bằng %2Fcách thủ công. Bạn có thể sử dụng URLEncodercho việc này.

Ví dụ URLEncoder.encode(url, "UTF-8")

Sau đó, bạn có thể nói

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")

9
Chức năng URLEncoder không được xác định trong một số trình duyệt, ví dụ: Chrome. Vì vậy, tôi đề nghị sử dụng encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.