ฉันสามารถใช้เครื่องหมายดอกจันใน URL ได้หรือไม่


13

มีเหตุผลใดบ้างที่ฉันไม่ควรใช้เครื่องหมายดอกจัน ( *) ใน URL?

พื้นหลัง:

ด้วยเครื่องหมายดอกจันฉันสามารถให้ URL ที่ดีและเป็นมิตรกับผู้ใช้ (หรือคุณคิดว่าอย่างไร) URL:

  • example.com/some/folder/search-phrase*
    วิธีการค้นหาหน้าเว็บที่มีชื่อขึ้นต้นด้วย "ค้นหาวลี" อยู่ใน / บาง / โฟลเดอร์ /

  • example.com/some/**/*search-phrase*
    วิธีการค้นหาหน้าใด ๆ กับการค้นหา "วลี" ที่ใดก็ได้ในชื่อของมัน

  • example.com/some/folder/*
    หมายถึงรายการหน้าทั้งหมดใน / บาง / โฟลเดอร์ / (แทนที่จะแสดง / บางหน้า / โฟลเดอร์ / ดัชนี)



1
นี่เป็นอีกคำถามที่คล้ายกัน SO: URL สามารถมีเครื่องหมายดอกจันได้หรือไม่ . ฉันไม่พบพวกเขาเพราะฉันสะกด Asterisk กับ Asterix: - / จนกว่าฉันจะได้รับการแก้ไข (ดูคำตอบ Asterix ด้านล่าง :-))
KajMagnus

@KajMagnus ฉันพบเว็บไซต์เป็นครั้งแรกในวันนี้โดยใช้เครื่องหมายดอกจันใน URL ของพวกเขา ดูคำตอบที่อัปเดตของฉันด้านล่าง
Nick

คำตอบ:


16

เมื่อใช้ Asterix ใน URL

การใช้Asterixใน URL ของคุณอาจไม่ใช่ความคิดที่ดีเพราะส่วนใหญ่:

  1. ปัจจุบัน UTF-8 หรือ ASCII ไม่สามารถแสดง Asterix ได้
  2. เขาน่าจะเป็นรอยเปื้อนในแถบที่อยู่ของเบราว์เซอร์มาตรฐานเล็กน้อย
  3. ฉันสงสัยว่าเขาจะชอบมันมาก และเขามีเพื่อนที่ค่อนข้างใหญ่
  4. มันแปลกมาก

เมื่อใช้เครื่องหมายดอกจันใน URL

การใช้เครื่องหมายดอกจัน (*) ใน URL (และใช่ฉันรู้ว่านั่นคือสิ่งที่คุณหมายถึงมาตลอด) ไม่ใช่ความคิดที่ดีเช่นนั้น เพราะมันเป็นตัวละครที่สงวนไว้จึงไม่ใช้ที่อื่น แม้ว่ารูปแบบ URL ของคุณจะเป็นมิตรกับผู้ใช้ แต่มีน้อยคนที่คิดว่าจะลองใช้และมีแนวโน้มที่จะให้ผลลัพธ์ที่ไม่สามารถคาดเดาได้เพราะความหมายของสัญลักษณ์แทนใน URL นั้นยากต่อการมองเห็น (ฉันไม่สามารถบอกได้ว่าตัวอย่างทั้งหมดของคุณมีความหมายจนกว่าฉันจะอ่านคำอธิบายของคุณ)

ไม่เพียงแค่นั้น แต่อาจมีวิธีที่มีความหมาย / มีความหมายในการทำสิ่งที่คุณอธิบาย ตัวอย่างเช่นคุณสามารถผนวกสตริงการสืบค้นและใช้ตัวแปร 'find' และ 'where' เพื่อบอกวิธีการของคุณว่าจะหาที่ไหน:

ค้นหาหน้าเริ่มต้นด้วย 'ค้นหาวลี' ใน/some/folder/:

example.com/some/folder/?find=search-phrase&where=start

ค้นหาหน้าด้วย 'วลีค้นหา' ได้ทุกที่:

example.com/some/?find=search-phrase&where=anywhere

ในการแสดงทุกหน้าฉันจะใช้วิธีแยกต่างหากที่เรียกว่า 'all' แทนสตริงการสืบค้นหรือไวยากรณ์ไวด์การ์ด:

example.com/some/folder/all

ไวยากรณ์สตริงแบบสอบถามคือไกลร่วมกันมากขึ้นกว่าดอกจัน - ดูในแถบที่อยู่ของคุณในครั้งต่อไปที่คุณทำการค้นหาของ Google เช่น - และมันอาจจะง่ายต่อการรหัสเกินไป

สุดท้ายหากคุณไม่ชอบรูปลักษณ์ของสตริงข้อความค้นหาคุณสามารถเพิ่มชื่อวิธีการที่เรียกว่า 'ค้นหา' และใช้อีกสองช่วงถัดไปเป็นตัวแปร 'ค้นหา' และ 'ตำแหน่ง' เช่นแทนที่จะ:

example.com/some/folder/?find=search-phrase&where=start

คุณสามารถมี:

example.com/some/folder/search/search-phrase/start

จากนั้นคุณเพียงแค่ต้องตรวจสอบคำหลัก 'ค้นหา' ในเส้นทาง URL ของคุณและเรียกวิธีการค้นหาของคุณโดยใช้กลุ่มเส้นทางสองส่วนถัดไปเป็นตัวแปร


อัปเดต:ฉันพบดอกจันดอกแรกใน URL ในวันนี้ อินเทอร์เฟซใหม่ของ archive.org ใช้งานได้ตามที่คุณอธิบาย (เป็นส่วนหนึ่งของคุณลักษณะการค้นหา) แทนที่คำหลัก 'ทั้งหมด' เช่น:

http://wayback.archive.org/web/*/http://google.com

แทน

http://web.archive.org/web/20040214050058/http://www.google.com/

ตัวอย่างแรกส่งกลับรายชื่อที่เก็บถาวรจากวันที่ทั้งหมดสำหรับ google.com แทนที่จะเป็นเพียงหน้าเว็บจากวันที่แน่นอน (ตัวอย่างที่สอง) ที่น่าสนใจคือฉันไม่สามารถเชื่อมโยงไปยังหน้าเว็บสดได้ที่นี่เพราะไซต์ Stack Exchange เข้ารหัส*อักขระเหมือน%2aเมื่อปรากฏใน URL ซึ่งส่งผลให้ 404 จาก archive.org (อาจเป็นอีกเหตุผลหนึ่งที่จะไม่ใช้เครื่องหมายดอกจันใน URL)

ฉันยังคิดว่ามันไม่ชัดเจนเท่า 'ทั้งหมด' แต่หากคุณกำลังมองหาตัวอย่างของเว็บไซต์อื่น ๆ ที่ใช้เครื่องหมายดอกจันใน URL นั่นเป็นสิ่งแรกที่ฉันได้เห็น


Wrt Asterix : อะไรนะ! คุณคิดว่าฉันหมายถึง "ดอกจัน" หรือไม่?
KajMagnus

Wrt Asterix : โอ้นั่นเป็นสาเหตุที่ฉันไม่พบหน้าเว็บใด ๆ ที่เกี่ยวข้องใน StackOverflow หรือเว็บมาสเตอร์ ตอนนี้ฉันพบหน้าเว็บที่เกี่ยวข้อง 2 รายการใน SO: การอนุญาตให้ใช้เครื่องหมายดอกจันใน URLและURL สามารถมีเครื่องหมายดอกจันหรือไม่ - ขอบคุณ :-)
KajMagnus

ขอบคุณสำหรับข้อมูลเกี่ยวกับวิธีที่ผู้ใช้ปลายทางอาจรับรู้ถึงเครื่องหมายดอกจัน ตอนนี้ฉันจะชอบสตริงการสืบค้นแทน
KajMagnus

(ในกรณีที่ทุกคนสงสัยเกี่ยวกับการอ้างอิงถึง Asterix: ฉันสะกด Asterisk ฉันคิดว่ามันเป็นAsterix :-))
KajMagnus

11

ใช่เพราะมันเป็นตัวละครที่สงวนไว้

ตัวละครอื่น ๆ ที่สงวนไว้

เครื่องหมายดอกจัน ("*", ASCII 2A ฐานสิบหก) และเครื่องหมายอัศเจรีย์ ("!", ASCII 21 ฐานสิบหก) ถูกสงวนไว้สำหรับการใช้งานซึ่งมีความสำคัญเป็นพิเศษภายในรูปแบบเฉพาะ

จากที่นี่: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

แก้ไข:

ส่วนที่ 2 เป็นตัวอักษรได้รับการเขียนใหม่เพื่ออธิบายว่าตัวละครใดที่ถูกสงวนไว้เมื่อถูกจองและทำไมพวกเขาจึงถูกสงวนไว้แม้ว่าจะไม่ได้ใช้เป็นตัวคั่นโดยไวยากรณ์ทั่วไป อักขระเครื่องหมายที่มักไม่ปลอดภัยในการถอดรหัสรวมถึงเครื่องหมายอัศเจรีย์ ("!"), เครื่องหมายดอกจัน ("*"), เครื่องหมายคำพูดเดี่ยว ("'") และวงเล็บเปิดและปิด ("(" และ ")") ถูกย้ายไปที่ชุดสำรองเพื่อชี้แจงความแตกต่างระหว่างสงวนและไม่ได้จองและหวังว่าจะตอบคำถามที่พบบ่อยที่สุดของนักออกแบบโครงการ

จากที่นี่: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications


อืม*เป็นตัวละครที่สงวนไว้ใช่ แต่มันเป็นย่อยคั่นและเมื่อฉันอ่าน URI ข้อมูลจำเพาะของมันดูเหมือนว่าฉันว่ามันปรับให้ใช้ย่อย delims ในลักษณะที่ใช้เฉพาะในองค์ประกอบเส้นทางของ URI - ไม่ได้หมายความว่ามันตกลงที่จะใช้*(และเช่น@, :, +, ,) ในทางที่ฉันไม่?
KajMagnus

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

สำหรับสิ่งที่คุ้มค่าที่นี่มีคนพูดว่า Wikipedia อนุญาตให้ใช้เครื่องหมายดอกจันใน URL และมีคนอื่นบอกว่าไม่เป็นไร: URL สามารถมีเครื่องหมายดอกจันหรือไม่
KajMagnus

คุณถามว่าคุณควรใช้มันหรือไม่ถ้าเป็นไปได้ในทางเทคนิคหรือไม่และแนวคิดทั่วไปก็คือว่าถ้าคุณรู้ว่าคุณกำลังทำอะไรอยู่คุณไม่ควรใช้มัน
อเล็กซ์

ฉันไม่รู้ว่าฉันเห็นด้วยกับคำตอบทั่วไปหรือไม่ วิธีการเรียนรู้สิ่งใหม่คือการทำสิ่งที่คุณไม่รู้ว่ามันทำงานอย่างไรจากนั้นคุณจะได้เรียนรู้และค้นพบ อนาคตของเราจะเป็นอย่างไรถ้าคนทั่วไปทำในสิ่งที่พวกเขารู้ว่าพวกเขาทำงานอย่างไร (เป็นรุ่น pre-alpha ที่ฉันจะเปิดตัวดังนั้นจึงไม่ได้มีไว้สำหรับการผลิต :-)) - ขอบคุณสำหรับข้อมูลและลิงก์ต่อไป :-)
KajMagnus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.