ฉันไม่ได้สังเกตเห็น Redirect นี้ (301) จริงๆเมื่อขอ URL เช่นนี้โดยไม่ทับ ("/") ในตอนท้าย: http://server/directory
เซิร์ฟเวอร์จะ respone กับส่วนหัว 301 http://server/directory/
เปลี่ยนเส้นทางถาวรกับตำแหน่งส่วนหัวของสถานที่ที่จะ
ดูตัวอย่างสดนี้:
คำขอของผู้ใช้:
GET /social HTTP/1.1
( http://192.168.1.111/social )
Apache Server การตอบกลับ:
HTTP/1.1 301 Moved Permanently
Location: http://192.168.1.111/social/
คำขอของผู้ใช้:
GET /social/ HTTP/1.1
( http://192.168.1.111/social/ )
Apache Server การตอบกลับ:
HTTP/1.1 200 OK
Apache access.log:
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social HTTP/1.1" 301 558 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
-
192.168.1.130 - - [05/Apr/2014:22:06:47 +0200] "GET /social/ HTTP/1.1" 200 942 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
ไดเร็กทอรี / social / มีindex.html
ไฟล์
ซอฟต์แวร์ Apache: Apache/2.2.22 (Ubuntu)
ตัวเลือกไดเรกทอรี:Options Indexes FollowSymLinks MultiViews
ดังนั้นคำถามของฉันคือทำไม apache ทำเช่นนี้? และวิธีการป้องกันการเปลี่ยนเส้นทางและส่งออกindex.html
โดยตรงหรือไม่ ลูกค้าต้องส่งคำขอสองคำขอซึ่งไม่จำเป็นจริงๆ และบางทีลูกค้าบางคนไม่อนุญาตให้มีการเปลี่ยนเส้นทางและจะไม่สามารถไปที่ไซต์ได้หากไม่มีเครื่องหมายทับ ("/")
ฉันไม่ต้องการปิดการใช้งานการเปลี่ยนเส้นทาง ฉันไม่ต้องการให้เซิร์ฟเวอร์ส่งการตอบกลับโดยตรงโดยไม่มีการเปลี่ยนเส้นทาง /social
แม้เมื่อร้องขอ
apache ถูกออกแบบมาเพื่อเปลี่ยนเส้นทางคำขอเหล่านั้นหรือไม่ เซิร์ฟเวอร์สามารถส่งข้อมูลโดยไม่เปลี่ยนเส้นทางใช่ไหม ฉันควรใช้mod_rewrite
เพื่อป้องกันสิ่งนี้หรือไม่ หรือการกำหนดค่าอื่น? หรือฉันควรปล่อยให้มันเป็นอย่างนี้และเพิ่มเครื่องหมายทับที่ส่วนท้ายของลิงก์ html ทั้งหมดและใช้ชีวิตด้วยการเปลี่ยนเส้นทางบางส่วน
พวกคุณคิดอย่างไร
index.html
โดยไม่เปลี่ยนเส้นทาง
/social
สำหรับบางส่วนของเหตุผลที่ว่าทำไมมันจะเป็นความคิดที่ดีที่จะให้บริการเนื้อหาจากเช่น (โดยทั่วไปแล้วการแสดงเนื้อหาเดียวกันในหลาย ๆ URL มักไม่ต้องการ)
/social
ตัวอย่างของคุณ