เครื่องหมายทับในตัวแปร url


106

ฉันได้ตั้งค่าแอปพลิเคชัน Coldfusion ให้มีไดนามิก URL บนหน้าเว็บเช่น

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

อย่างไรก็ตามชื่อตัวแปรของฉันบางครั้งจะมีเครื่องหมายทับเช่น

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

สิ่งนี้ทำให้เกิดปัญหาเนื่องจากแอปพลิเคชันของฉันสันนิษฐานว่าเครื่องหมายทับในชื่อตัวแปรแสดงถึงส่วนอื่นของเว็บไซต์อัลบั้มศิลปิน ดังนั้น URL จะล้มเหลว

ฉันสงสัยว่าจะมีการป้องกันไม่ให้สิ่งนี้เกิดขึ้นหรือไม่? ฉันจำเป็นต้องใช้ฟังก์ชันที่แทนที่เครื่องหมายทับในชื่อตัวแปรด้วยอักขระอื่นหรือไม่?


4
สิ่งเหล่านี้เป็นเรื่องปกติหรือเครื่องหมายทับ ไม่ใช่แบ็กสแลช
Caleb Hearth

คำตอบ:


177

%2Fคุณจำเป็นต้องหลบหนีทับเป็น


โอเคนี่เป็นความคิดที่ดีมีเหตุผลใดที่จะใช้% 2F หรือไม่
แท็กซี่น้ำ

1
นี่คือการเข้ารหัส URL มาตรฐาน
SLaks

44
IIS ยังคงสกัดกั้นสิ่งนี้เป็น a /และทำลายเส้นทาง :(
Piotr Kula

21
Apache ตีความสิ่งนี้เป็น / และทำลายเส้นทางเว้นแต่ว่าคำสั่ง AllowEncodedSlashes จะเปิดอยู่ (โดยค่าเริ่มต้นจะปิด)
ชิม

5
คุณสามารถใช้encodeURIComponentและdecodeURIComponentเพื่อการนี้
Keavon

17

คุณสามารถแทนที่เครื่องหมายทับ/ด้วยเครื่องหมายขีดล่างได้อย่างง่ายดาย_เช่น Wikipedia ใช้สำหรับเว้นวรรค การแทนที่อักขระพิเศษด้วยเครื่องหมายขีดล่าง ฯลฯ ถือเป็นเรื่องปกติ


4
เป็นเรื่องธรรมดา แต่ไม่ใช่แนวทางปฏิบัติที่ดีที่สุด การใช้อักขระที่ใช้ Escape เป็นแนวทางปฏิบัติที่ดีที่สุดเนื่องจากทุกเบราว์เซอร์เข้าใจสิ่งนี้ทุกเซิร์ฟเวอร์เข้าใจสิ่งนี้และนักพัฒนาทุกคนควรเรียนรู้ที่จะทำเช่นนี้ UNderscores ก็ไม่ดีสำหรับ SEO เช่นกัน! ฉันแค่พูดแบบนี้เหมือนที่ฉันเคยทำมาแล้วและเรียนรู้วิธีที่ยากที่มันจะกลับมาและต่อยคุณอย่างหนัก
Piotr Kula

1
@ppumkin - ทำไมถึงคิดอย่างนั้น? การใช้อักขระที่ใช้ Escape ไม่ใช่แนวทางปฏิบัติที่ดีที่สุดเนื่องจากสร้าง URL ที่ไม่เป็นมิตรกับผู้ใช้และอาจดูแปลกมากสำหรับผู้ใช้ที่ไม่ได้ใช้เทคโนโลยี ฉันคิดว่าดีที่สุดที่จะพยายามรักษา URL ให้เหมาะสมที่สุด
vsync

เกี่ยวกับUNderscores ARE BAD FOR SEOความคิดเห็น เครื่องหมายขีดล่างแปลว่าขีดล่างโดย Google, ขีดกลาง / ยัติภังค์จะตีความเป็นช่องว่าง ทำไม? Coders ผู้เข้ารหัสจำนวนมากใช้ Google (รวมถึง Google เองตั้งแต่ยุคแรก ๆ ) หากพวกเขาถือว่าขีดล่างเป็นช่องว่างคุณจะไม่พบอีกต่อไปfoo_bar(น่าจะเป็นคลาสบางประเภท) ในผลการค้นหา Blah blah ... โดยสรุป: เครื่องหมายขีดล่างไม่ได้เป็นผลเสียต่อ SEO หากคุณเข้าใจว่าเครื่องมือค้นหาที่คุณ "เพิ่มประสิทธิภาพ" นั้นใช้งานได้จริงอย่างไร
William Isted

8

คุณต้องหลีกเลี่ยงสิ่งเหล่านั้น แต่อย่าเพิ่งแทนที่%2Fด้วยตนเอง คุณสามารถใช้URLEncoderสำหรับสิ่งนี้

เช่น URLEncoder.encode(url, "UTF-8")

จากนั้นคุณสามารถพูด

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

9
ฟังก์ชัน URLEncoder ไม่ได้กำหนดไว้ในบางเบราว์เซอร์เช่น Chrome ดังนั้นผมจึงขอแนะนำให้ใช้encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.