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


17

ฉันถามสิ่งนี้เพราะเมื่อใดก็ตามที่ฉันวางเมาส์เหนือลิงก์ไปยังหน้าแรก (เช่นhttp://www.example.com)ฉันสังเกตเห็นว่ามีการเพิ่มเครื่องหมายสแลชต่อท้ายเสมอ (ตามที่สังเกตบนแถบสถานะของเบราว์เซอร์) ว่าลิงค์โฮมเพจมีแอตทริบิวต์ href ที่ลงท้ายด้วย เครื่องหมายทับหรือไม่ แต่เมื่อใดก็ตามที่ฉันอยู่ในโฮมเพจ URL ที่แสดงจะไม่มีเครื่องหมายทับท้าย

ฉันลองป้อนเครื่องหมายสแลชไปที่ URL ในแถบ URL และด้วยการเปิดใช้งาน Firebug ฉันสังเกตว่าไซต์จะแสดงสถานะ 200 OK เสมอ บทความที่กล่าวถึงสถานะนี้ว่าการมีเครื่องหมายสแลชในตอนท้ายจะหลีกเลี่ยงการเปลี่ยนเส้นทาง 301 แต่ผมไม่ได้เห็นการเปลี่ยนเส้นทางใด ๆ แม้ในนี้หน้า

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


ใช่. ยกตัวอย่างเช่นผมคิดว่าโอเปร่าซ่อนไปข้างหน้าทับ (และมันยังซ่อนโปรโตคอลบางครั้งที่ไดรฟ์ผมบ้าใน dev!) ...
แมตต์

คำถามที่นี่คืออะไร? (หรือประเด็นคำถาม) และ "ไซต์" ที่คุณอ้างถึงคืออะไร หากคุณตรวจสอบที่นี่กับผู้ดูแลเว็บตัวอย่างเช่นคุณจะทราบว่าใน Firefox และ Chrome (ฉันไม่ได้ทำการทดสอบเต็มรูปแบบ) สิ่งที่คุณอธิบายถึงการเพิ่มสแลชจะไม่เกิดขึ้น ดูเหมือนว่าจะบังคับให้สแลชถูกลบออกหากคุณลองและเพิ่มสแลชในเรื่องนั้น
Su '14

@Su 'ฉันหมายถึงไซต์ใด ๆ และแถบสถานะอ้างถึงไซต์ที่แสดงที่ด้านล่างของเบราว์เซอร์ใด ๆ และแถบ URL หมายถึงแถบที่อยู่ด้านบน ขออภัยถ้าฉันทำให้คุณสับสน
คำถามล้น

2
@Matt Opera ยังซ่อนสตริงข้อความค้นหา (บิตหลังจาก?ใน URL) ซึ่งเป็น IMO ที่ค่อนข้างงี่เง่า
DisgruntledGoat

คำตอบ:


28

ใช่เบราว์เซอร์หลักทั้งหมด "ต่อท้ายสแลช" กับคำขอ HTTPเมื่อขอ URL โดเมนเปล่า (เช่นหน้าแรก) นี่เป็นสิ่งจำเป็นจริง ๆ เพื่อทำให้คำขอ HTTP นั้นถูกต้องซึ่งสำหรับhttp://example.com/คือ:

GET / HTTP/1.1
Host: example.com

จดบันทึก/(เครื่องหมายทับ) ในบรรทัดแรก - นี่คือ URL ที่กำลังร้องขอ ไม่ถูกต้องไม่มีอะไรที่นี่ จากRFC 2616 :

โปรดทราบว่าเส้นทางที่แน่นอนต้องไม่ว่างเปล่า หากไม่มีอยู่ใน URI ดั้งเดิมจะต้องให้เป็น "/" (รูทเซิร์ฟเวอร์)

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

ไม่มีการเปลี่ยนเส้นทาง 301 เกิดขึ้นหากคุณระบุhttp://example.com(ไม่สแลช) เนื่องจากเบราว์เซอร์แก้ไขคำขอ HTTP ก่อนที่จะทำการแก้ไข

โปรดทราบว่าสิ่งนี้แตกต่างจากการเพิ่มสแลชที่ท้าย URL เมื่อมีพา ธ / ไดเรกทอรี เช่น. http://example.com/directory/. บทความที่คุณลิงก์ไปนั้นดูเหมือนว่าจะปฏิบัติต่อทั้งสองอย่างและดูเหมือนจะไม่ถูกต้องทั้งหมด IMO หากคุณร้องขอhttp://example.com/directory(ไม่มีสแลช) เบราว์เซอร์จะไม่ต่อท้ายสแลชและใช่เซิร์ฟเวอร์ส่วนใหญ่จะเปลี่ยนเส้นทาง 301 ไปยังhttp://example.com/directory/(สแลช) แต่ขึ้นอยู่กับเซิร์ฟเวอร์ มันอาจทำลาย! บน Apache เช่นนี้จะขึ้นอยู่กับการตั้งค่าความเป็นอยู่ที่จะสั่งDirectorySlashon


หากต้องการเพิ่มคำตอบทุกครั้งที่คุณเชื่อมโยงไปยังหน้าแรกของคุณให้เพิ่มเครื่องหมายสแลชต่อท้ายเพื่อบันทึกทรัพยากรของเซิร์ฟเวอร์
Anagio

5
@Anagio ฉันไม่คิดว่าคุณเข้าใจคำตอบ คุณจะไม่บันทึกทรัพยากรเซิร์ฟเวอร์เลยเพราะไม่มีการเปลี่ยนเส้นทาง โดเมนที่มีและไม่มีเครื่องหมายทับนั้นเหมือนกัน 100% กล่าวอีกนัยหนึ่งไม่มีทางที่จะส่งคืนเนื้อหาที่แตกต่างกันสำหรับแต่ละรายการ (ซึ่งคุณสามารถทำได้กับ URL ของไดเรกทอรี)
DisgruntledGoat

1
@DisgruntledGoat หากคุณไม่ใช้เครื่องหมายทับต่อท้ายและเซิร์ฟเวอร์เปลี่ยนเส้นทางจากนั้นการเพิ่มเครื่องหมายสแลชต่อท้ายในลิงก์จะช่วยให้เซิร์ฟเวอร์ไม่ต้องโหลดซ้ำไปที่หน้า นั่นคือทั้งหมดที่ฉันได้รับที่จะใส่เฉือนพูดคุยเพื่อพักผ่อน Google มีบทความที่ดีเกี่ยวกับมันgooglewebmastercentral.blogspot.com/2010/04/…
Anagio

5
@Anagio บทความที่เกี่ยวกับต่อท้ายทับสำหรับไดเรกทอรีในขณะที่คำถามนี้เป็นเรื่องเกี่ยวกับเฉือนท้ายในโดเมนเท่านั้น ดังที่คำตอบข้างต้นระบุไว้ว่ามันสร้างความแตกต่างให้เป็นศูนย์เนื่องจากลิงก์ไปยังexample.comหรือexample.com/ทั้งสองต้องการการร้องขอเดียวกันกับเซิร์ฟเวอร์
DisgruntledGoat

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