ใน URL อะไรคือ // สำหรับ [ปิด]


39

โดยปกติเมื่อผมเห็น//ก็ usualy ต่อไปคำนำหน้าบางอย่างเช่นโปรโตคอลหรือhttp: ftp:ฉันไม่เคยเห็นมันวางไว้ที่อื่น ตัวอย่างเช่น,

http://www.google.com/

เป็น URL ทั่วไป

อย่างไรก็ตามฉันพบว่ามีสองไวยากรณ์ต่อไปนี้เพื่อให้ได้เวอร์ชั่นที่ต่างกันของไซต์เดียวกัน

http://www.weather.com/

http://www.weather.com//

ฉันคิดว่า//ทุกที่อื่นนอกเหนือจากสเปคโพรโทคอลจะไม่ถูกต้อง ด้วยความประหลาดใจของฉันฉันผิด มันเกี่ยวกับจุดจบ//ที่ yeilds เป็นไซต์อื่นในเวอร์ชันเดียวกันคืออะไร?

แก้ไข:

บางคนในไซต์นั้นต้องติดใจกันเพราะลิงก์ทั้งสองเชื่อมโยงกันในหน้าเดียวกัน


9
ถ้าฉันต้องเดาสิ่งที่คุณกำลังทำอยู่คือการเห็นเว็บไซต์เดียวกันสองครั้ง แต่สิ่งที่พิเศษ / ท้ายที่สุดคือการทำลาย CSS หรือสิ่งที่เด็ก ๆ ทุกวันนี้ใช้เพื่อจัดรูปแบบเว็บไซต์ของพวกเขาด้วย :)
Mark Allen

webmasters.stackexchange.comอาจเหมาะสำหรับคำถามนี้
Mehper C. Palavuzlar

1
@ MehperC.Palavuzlar ในการหวนกลับใช่ แต่ในช่วงเวลาของคำถามฉันคิดว่าขอบเขตค่อนข้างกว้างกว่าที่เป็นอยู่
แช้ดแฮร์ริสัน

@ MarkAllen น่าสนใจที่จะทราบว่าการใช้///หรือ////ท้าย URL ทำให้ไซต์นั้นเหมือนกับ/ที่// ทำให้ผลลัพธ์แตกต่างกัน
ชาดแฮร์ริสัน

ในขณะเดียวกันแบ็กสแลชคู่ (\\) จะเห็นได้ทั่วไปในรูปแบบการตั้งชื่อเครื่องแบบของ Windows เช่น\\HostName[@Port]\SharedFolder\Resource
William C

คำตอบ:


67

ส่วนนำ//คือส่วนหนึ่งของไวยากรณ์ URL นักประดิษฐ์ของเวิลด์ไวด์เว็บได้ขออภัยในความผิดพลาดนั้น

จริง ๆ ถ้าคุณคิดเกี่ยวกับมันไม่จำเป็นต้องใช้เครื่องหมายทับสองครั้ง ฉันสามารถออกแบบให้ไม่มีแบบสองสแลชได้ - Sir Tim Berners-Lee ผู้ประดิษฐ์อินเทอร์เน็ต


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


สิ่งนี้ทำให้เสร็จสมบูรณ์เนื่องจากคุณสามารถกำหนดค่าเว็บเซิร์ฟเวอร์เพื่อค้นหาดัชนีอื่นนอกเหนือจากเว็บรูท! หมวกของฉันออกไปให้คุณที่ดีครับ
แช้ดแฮร์ริสัน

คุณกำลังพูดว่าhttp://example.comสามารถได้รับการปฏิบัติที่แตกต่างจากhttp://example.com/? ฉันไม่คิดว่าเป็นกรณีที่มีการเฉือนครั้งแรก
DisgruntledGoat

1
@DisgruntledGoat คุณทำได้ใช่โดยใช้.htaccessกฎบางอย่าง แต่คุณอาจไม่ควร
แมทธิว

1
คุณไม่สามารถปฏิบัติhttp://example.comแตกต่างจากhttp://example.com/ในเว็บเซิร์ฟเวอร์เนื่องจากทั้งคู่มีเส้นทางว่างเปล่า คุณสามารถปฏิบัติต่อพวกเขาแตกต่างกันในเบราว์เซอร์
David Schwartz

3
ไม่ต้องพูดถึงส่วนหัวของโฮสต์ศูนย์หรือหนึ่งสแลชแปลเป็นคำขอ http เดียวกันGET / HTTP/1.1:: tools.ietf.org/html/rfc2616.html#section-3.2.3
SingleNegationElimination

19

เมื่อเร็ว ๆ นี้ก็อาจจะแย้งว่าเฉือนคู่ไม่ได้มีบทบาท Google แนะนำ (เพื่อหลีกเลี่ยงการโทรเนื้อหาที่ไม่ปลอดภัยออกจากหน้าเว็บที่ปลอดภัยเป็นต้น) ละเว้นโปรโตคอลจากทรัพยากรที่ฝังตัว (stylesheets, js ฯลฯ ) เช่นนี้

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>

ดังนั้นจึงเป็นที่ชัดเจนว่า URL ที่ไม่มีโปรโตคอลดังกล่าวเป็น URL ที่ผ่านการรับรองโดยสมบูรณ์ไม่ใช่ URL ที่เกี่ยวข้อง (ซึ่งจะเริ่มต้นด้วยเครื่องหมายทับเดียว)


1
สไตล์นี้เรียกว่า URL / URI "โปรโตคอลที่เกี่ยวข้อง" มีคำถามที่คล้ายกันเกี่ยวกับ SO
hippietrail

1
ไม่แนะนำอีกแล้ว ดูเพิ่มเติมที่paulirish.com/2010/the-protocol-relative-url
lorond

13

ที่จริงการตอบคำถามที่สเปคเดิมให้โปรโตคอลhttp:(หรืออาจจะftp:, gopher:, mailto:, news:, telnet:, wais:, file:หรือprospero:) แล้ว// ที่จะแสดงให้เห็นว่า Uniform Resource Locator (URL) ไวยากรณ์ถูกนำมาใช้แล้วโฮสต์ (คำนำหน้าตัวเลือกที่มีuser:password@) แล้วที่อยู่ /เริ่มต้นที่เหมาะสมอีกด้วย นี้ถูกนำเสนอในRFC 1738

เมื่ออินเทอร์เน็ตพัฒนาขึ้นhttp:กลายเป็นโพรโทคอลที่โดดเด่นดังนั้นเบราว์เซอร์จึงสันนิษฐานว่าhttp://ควรเพิ่มส่วนนำหน้าหากไม่มี


3
ดูเหมือนว่าคำตอบของคุณจะบ่งบอกว่ามีสิ่งอื่นนอกเหนือจาก URL ที่สามารถใช้กับโปรโตคอลได้ในจุดหนึ่งและจะใช้อย่างอื่นนอกเหนือจาก//เพื่อระบุว่ามีการใช้งานอยู่ ... ใช่หรือไม่
Izkata

3
@Izkata ในช่วงปลายยุค 80 และ 90 เมื่ออินเทอร์เน็ตเริ่มต้นขึ้นมีการแนะนำรูปแบบที่แตกต่างกันหลายอย่างสำหรับรายการต่าง ๆ URL ที่มี / เป็นส่วนหนึ่งของโกศ (ดู RFC 3305) isbn:1-23-456789-12-3และเหล่านี้สามารถมีรูปแบบที่แตกต่างกันเช่น ในทางปฏิบัติการhttp:กำหนดว่าส่วนที่เหลือจะเป็น URL RFCs เป็นเพียงข้อเสนอและมักอนุญาตสำหรับส่วนขยายที่ไม่เคยเป็นจริง ณ จุดหนึ่งทิมเบอร์เนอร์ส - ลีกล่าวว่าสิ่ง//นี้เป็นของ 'ซับเน็ต' (เช่นhttp:/govnet/whitehouse.gov) ไม่เคยใช้ความคิดนี้ แต่ '//' จะยังคงเป็นโค้ดที่มากพอที่จะคาดหวังและตรวจสอบได้
StarNamer

1
@Izkata: คุณอาจไม่เห็น URL ที่ไม่ใช่ URL ที่ใช้กับโปรโตคอลการสื่อสาร นั่นคือสิ่งที่ // สำหรับ บ่งชี้ว่ามีการใช้โพรโทคอลในการเข้าถึงตำแหน่งเครือข่าย (อาจเป็นระยะไกล) ซึ่งเป็นทรัพยากรที่จะพบ มีอยู่มากมายของผอบอื่น ๆ ที่มีส่วนข้อมูลอื่น ๆ และไม่ได้ใช้ // (เบราว์เซอร์ของคุณอาจจะตระหนักถึง "mailto:" ตัวอย่างเช่น) ดู: en.wikipedia.org/wiki/URI_scheme
KutuluMike

@MichaelEdenfield นั่นคือสิ่งที่ฉันสงสัยตอนนี้ เคยมีจุดที่ตั้งใจจะใช้ที่แตกต่าง - สิ่งที่แตกต่างที่สามารถสื่อสารผ่านโปรโตคอลเดียวกัน เป็นตัวอย่างที่หยาบคายความตั้งใจในครั้งเดียวอาจเป็นไปได้http://www.google.com/และhttp:%/74.125.225.97/ต่อทั้งสองสิ่งนั้นถูกต้องและ//ระบุชื่อโฮสต์ในขณะที่บางอย่างเช่น%/ระบุที่อยู่ IP หรือไม่
Izkata

1
ฉันไม่คิดอย่างนั้น อย่างน้อยฉันไม่เคยเห็นเอกสาร / ตัวอย่าง / ฯลฯ ฉบับร่างใด ๆ ที่มีรูปแบบการสืบทอดลำดับอื่นสำหรับ URL ความประทับใจของฉันคือ TBL ต้องการบางสิ่งบางอย่างเพื่อให้ชัดเจนว่า URL ชี้ไปที่ทรัพยากรจริง(และไม่ใช่ข้อมูลโดยพลการ) และการใช้ // ทำให้สิ่งต่าง ๆ ดูเหมือนเป็นไฟล์ที่เพียงพอ สไตล์อื่น ๆ ของ URN ที่ฉันเคยเห็นไม่มีคำนำหน้าพิเศษในส่วนของข้อมูล โปรโตคอลบางอย่างอนุญาตให้ทำได้ (ฉันคิดว่าเทลเน็ตและโกเฟอร์เป็นต้น) แต่ฉันไม่เคยเห็นอะไรแบบนั้นสำหรับ http (s)
KutuluMike

1

ฉันต้องการเพิ่มคำตอบที่ David ยอมรับ:

แม้จะมีคำขอโทษจากนักประดิษฐ์ของเว็บฉันคิดว่าไวยากรณ์ซัดสองครั้งมีวัตถุประสงค์สำคัญ: การมองเห็นที่โดดเด่น เครื่องหมายทับสองชั้นอนุญาตให้แยกความแตกต่างของ URL ในข้อความโดยไม่มีไฮเปอร์ลิงก์ เมื่อคุณเห็นเครื่องหมายทับสองชั้นคุณคิดทันทีว่าสามารถใส่ลงในหน้าต่างเบราว์เซอร์ได้เหมือนกับที่คุณคิดว่ามีข้อความอยู่@สามารถใช้เพื่อส่งอีเมลได้ มันมีความสำคัญอย่างยิ่งในช่วงการเปลี่ยนภาพไปยังเว็บที่โปรโตคอลในยุคนั้น (ftp, telnet, gopher) มีความคิดแปลก ๆ ของตัวเองในการแสดงที่อยู่เซิร์ฟเวอร์หรือเส้นทางทรัพยากร ปัญหาส่วนใหญ่ที่เกี่ยวข้องกับการทับซ้อนสองครั้งจะยังคงมีอยู่เนื่องจากการทับสองครั้งเป็นส่วนที่เข้ารหัสลับน้อยที่สุดของ URL ให้คิดถึงหมายเลขพอร์ตการเข้ารหัสเปอร์เซ็นต์และการพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่การมี URL อย่าง http: something.com อาจสับสนกับตัวอย่างของฉันได้ที่นี่: something.com ดูที่ http: // ในทางกลับกันมันส่องแสงเหมือนเพชรได้อย่างไร เครื่องหมายทับสองครั้งเป็นส่วนสำคัญของสัญลักษณ์ของเว็บและฉันเชื่อว่ามันเร่งอัตราการยอมรับเช่นกันแม้ว่ามันจะไม่ได้ตั้งใจก็ตาม

พวกเขายังอาจจะทำให้งานง่ายขึ้น AmigaOS ความแตกต่างระหว่างชื่อไฟล์และ URL ตั้งแต่ AmigaOS volume:path/to/destinationใช้ไวยากรณ์เส้นทางของแฟ้ม :)

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