301 เปลี่ยนเส้นทางไปที่หน้า 404 หรือตั้งรหัสสถานะเป็น 404 และอยู่ในหน้าต่อไป?


9

ฉันมีหลายหน้าในเว็บไซต์ของฉันที่มีเพียงผู้ดูแลระบบเท่านั้นที่สามารถเข้าถึงและเข้าถึงหน้าเหล่านี้ได้หากกำหนดค่าการสอบถามหากพบและตั้งค่าอย่างถูกต้อง ตัวอย่างเช่น:

http://www.mydomain.com/show-daily-statistics?key=abc


ลิงค์ด้านบนจะแสดงเนื้อหาของหน้า แต่อย่างอื่นเช่นด้านล่างจะไม่:

http://www.mydomain.com/show-daily-statistics


ตอนนี้ฉันกำลังคิดว่าจะทำอย่างไรถ้าเครื่องมือค้นหาและ / หรือผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบลงจอดบนหน้าเว็บที่ซ่อนอยู่เหล่านี้

แน่นอนว่าฉันสามารถเปลี่ยนรหัสสถานะของหน้าเป็น 404 หรือเปลี่ยนเส้นทาง 301 เป็น:

http://www.mydomain.com/404-error


ทางออกที่ดีที่สุดสำหรับ Google และ SEO คืออะไร


6
ฉันจะพิจารณาใช้การรับรองความถูกต้องจริงแทนหากข้อมูลที่คุณพยายามซ่อนมีความสำคัญใด ๆ เลย นอกจากนั้นการเปลี่ยนเส้นทาง 301 ยังหมายถึงว่าเนื้อหาได้ถูกย้ายไปซึ่งไม่ได้เป็นกรณีที่นี่
คุณ

คำตอบ:


11

รหัสที่ถูกต้องน่าจะเป็น 401 Not Authorized

ตามข้อกำหนด HTTP

10.4.2 401 ไม่ได้รับอนุญาต

การร้องขอต้องมีการรับรองความถูกต้องของผู้ใช้ การตอบสนองต้องมีฟิลด์ส่วนหัว WWW-Authenticate (ส่วน 14.47) ที่มีความท้าทายที่เกี่ยวข้องกับทรัพยากรที่ร้องขอ ไคลเอนต์อาจทำซ้ำการร้องขอด้วยฟิลด์หัวข้อการอนุญาตที่เหมาะสม (ส่วน 14.8) หากคำร้องขอนั้นมีข้อมูลประจำตัวการอนุญาตแล้วการตอบสนอง 401 บ่งชี้ว่าการอนุญาตนั้นถูกปฏิเสธสำหรับข้อมูลรับรองเหล่านั้น หากการตอบสนอง 401 มีความท้าทายเช่นเดียวกับการตอบสนองก่อนหน้านี้และตัวแทนผู้ใช้ได้พยายามรับรองความถูกต้องอย่างน้อยหนึ่งครั้งผู้ใช้ควรถูกนำเสนอเอนทิตีที่ได้รับในการตอบสนองเนื่องจากนิติบุคคลนั้นอาจมีข้อมูลการวินิจฉัยที่เกี่ยวข้อง การพิสูจน์ตัวตนการเข้าถึง HTTP อธิบายไว้ใน "การพิสูจน์ตัวตน HTTP: การรับรองความถูกต้องพื้นฐานและการเข้าถึงข้อมูลย่อย" [43]

หรืออีกวิธีหนึ่ง

10.4.4 403 สิ่งต้องห้าม

เซิร์ฟเวอร์เข้าใจคำขอ แต่ปฏิเสธที่จะปฏิบัติตาม การอนุญาตจะไม่ช่วยและไม่ควรทำซ้ำการร้องขอ หากวิธีการร้องขอไม่ได้เป็น HEAD และเซิร์ฟเวอร์ประสงค์ที่จะเปิดเผยต่อสาธารณะว่าทำไมคำขอไม่ได้รับการตอบสนองก็ควรจะอธิบายเหตุผลของการปฏิเสธในเอนทิตี หากเซิร์ฟเวอร์ไม่ต้องการให้ข้อมูลนี้พร้อมใช้งานสำหรับลูกค้าสามารถใช้รหัสสถานะ 404 (ไม่พบ) แทน

404ทั้งสองมีความหมายที่ถูกต้องมากกว่า ทรัพยากรมีอยู่ดังนั้น404ไม่ถูกต้อง 401ควรถูกต้อง แต่คุณไม่ต้องการการตรวจสอบสิทธิ์ การรักษาความปลอดภัยโดยความสับสนไม่ได้รักษาความปลอดภัย 403แก้ไขให้ถูกต้องเมื่อมีการเข้าใจคำขอทรัพยากรมีอยู่แล้วเพียงปฏิเสธที่จะให้บริการตามคำขอ 404มีความเหมาะสมหากคุณไม่ต้องการเปิดเผยสาเหตุที่403เกิดขึ้น

ไม่ว่าในกรณีใดการ301เปลี่ยนเส้นทางไม่เหมาะสมทรัพยากรไม่ได้ถูกย้าย


2
Google ไม่ได้จัดทำดัชนีและลบหน้าเว็บที่ส่งคืนข้อความสถานะ 401/403 คำถามที่คล้ายกันถูกถามสักครู่หรือคุณสามารถใช้ noindex แบบธรรมดาและบล็อกโดยใช้ robots.txt ได้เสมอ
Simon Hayter

1
@ WPRookie82 เกี่ยวกับการปกป้องเพจโดยเก็บเป็นความลับ - คุณทำผิด
คธูลู

4
การรักษาความปลอดภัยโดยความสับสนนั้นไม่ใช่ความปลอดภัยเลย

1
การใช้ 401 สำหรับวิธีการรับรองความถูกต้องอื่น ๆ นอกเหนือจาก HTTP Basic หรือ Digest auth (หรือแบบแผนรับรองความถูกต้อง RFC2617 อื่น ๆ ) ได้รับการกล่าวถึงที่นี่มาก่อน ; ความเห็นของฉันในเวลานั้นซึ่งฉันยังคงอยู่คือว่ามันอาจใช้งานได้จริง แต่มันไม่ถูกต้องตามข้อกำหนด HTTP และในกรณีใด ๆ 403 หรือ 404 ก็น่าจะดีกว่า
Ilmari Karonen

1
ฉันเห็นด้วยกับความคิดเห็นอื่น ๆ ที่ 401 Unauthorized ไม่เหมาะสมตามข้อกำหนด HTTP
Stephen Ostermiller

1

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

นี่คือวิธีที่ Google ทำเช่นกัน ดูว่าเกิดอะไรขึ้นเมื่อคุณไปที่หน้าจำลอง: http://www.google.com/analytics/asdsas


มีการแก้ไขเล็กน้อยหนึ่งโพสต์ข้างต้นของฉันhttp://www.example.com/404-errorมีอยู่มันเป็นหน้า 404 ทั่วโลกของเว็บไซต์ทั้งหมดดังนั้นฉันจึงไม่ได้เปลี่ยนเส้นทางไปยังหน้าเว็บที่ไม่ออก
WPRookie82

@ WPRookie82: เท่าที่ทุกคนยกเว้นคุณและเว็บเซิร์ฟเวอร์ของคุณเป็นห่วงก็ไม่มีความแตกต่างระหว่างหน้าเว็บที่ไม่มีอยู่กับหน้าเว็บที่มีอยู่แล้ว
Ilmari Karonen

1

รหัสการตอบสนอง HTTP ที่ถูกต้องเชิงความหมายสำหรับสถานการณ์นี้จะเป็นสิ่งต้องห้าม 403 :

เซิร์ฟเวอร์เข้าใจคำขอ แต่ปฏิเสธที่จะปฏิบัติตาม การอนุญาตจะไม่ช่วยและไม่ควรทำซ้ำการร้องขอ หากวิธีการร้องขอไม่ได้เป็น HEAD และเซิร์ฟเวอร์ประสงค์ที่จะเปิดเผยต่อสาธารณะว่าทำไมคำขอไม่ได้รับการตอบสนองก็ควรจะอธิบายเหตุผลของการปฏิเสธในเอนทิตี หากเซิร์ฟเวอร์ไม่ต้องการให้ข้อมูลนี้พร้อมใช้งานสำหรับลูกค้าสามารถใช้รหัสสถานะ 404 (ไม่พบ) แทน

(แม้ว่าคำจำกัดความของการตอบสนอง 403 บอกว่า "การอนุญาตจะไม่ช่วย" IMO ควรเข้าใจว่าเป็นการอ้างถึงการรับรองความถูกต้อง HTTP Basic / Digestโดยเฉพาะซึ่งรหัสสถานะ401 ไม่ได้รับอนุญาตควรใช้แทนเนื่องจากคุณไม่ได้ใช้ วิธีการรับรองความถูกต้องอย่างใดอย่างหนึ่ง 403 เป็นรหัสสถานะที่เหมาะสมในกรณีของคุณ)


อย่างไรก็ตามการใช้รหัส 403 สถานะเผยให้เห็น (หรืออย่างน้อยขอนัย) ข้อเท็จจริงที่ว่ามีเป็นหน้าเว็บที่มี URL ที่แม้ว่าเซิร์ฟเวอร์ปฏิเสธที่จะส่งมอบให้ เนื่องจากนี่เป็นสิ่งที่คุณอาจต้องการปกปิดจากผู้บุกรุกที่อาจเกิดขึ้นมาตรฐาน HTTP / 1.1 จะอนุญาตให้ส่งคืนรหัสสถานะ404 ไม่พบแทนอย่างชัดเจน( ให้ความสำคัญ ):

เซิร์ฟเวอร์ไม่พบสิ่งใดที่ตรงกับ Request-URI ไม่มีการบ่งชี้ว่าเงื่อนไขเป็นแบบชั่วคราวหรือถาวร รหัสสถานะ 410 (หายไป) ควรใช้หากเซิร์ฟเวอร์รู้ผ่านกลไกบางอย่างที่สามารถกำหนดค่าภายในได้ว่าทรัพยากรเก่าไม่สามารถใช้งานได้อย่างถาวรและไม่มีที่อยู่สำหรับส่งต่อ รหัสสถานะนี้มักใช้เมื่อเซิร์ฟเวอร์ไม่ต้องการเปิดเผยสาเหตุที่ทำให้คำขอถูกปฏิเสธหรือเมื่อไม่มีการตอบสนองอื่นใดที่เกี่ยวข้อง

แน่นอนเพื่อให้การปกปิดดังกล่าวมีผลบังคับใช้หน้าข้อผิดพลาด 404 ที่คุณกลับมาจะต้องเหมือนกันกับสิ่งที่คุณส่งคืนสำหรับหน้าจริงที่ไม่มีอยู่จริง มิเช่นนั้นจะหลอกผู้โจมตีที่โง่เง่าที่สุด (หากเป้าหมายของคุณเพียงเพื่อไม่ให้หน้าเว็บอยู่ในดัชนีของ Google การตอบสนอง 403 ก็จะทำได้เช่นกัน)


คำตอบอื่น ๆ ที่เป็นไปได้ที่แนะนำในคำถามของคุณและคำตอบอื่น ๆ คืออะไร?

ตามที่ระบุไว้ก่อนหน้านี้ฉันไม่เชื่อว่าการตอบสนอง 401 เหมาะสมที่นี่ มันอาจใช้งานได้จริงตราบเท่าที่เบราว์เซอร์และเครื่องมือค้นหาส่วนใหญ่จะใช้รหัสตอบกลับ4 xxซีรีย์ใด ๆ ที่ไม่ถูกต้องหรือไม่รู้จักราวกับว่ามันเป็น 404 แต่ก็ยังไม่ถูกต้องตามข้อกำหนด HTTP และไม่มีเหตุผลเชิงปฏิบัติใด ๆ มากกว่า 403 หรือ 404

สำหรับการใช้การเปลี่ยนเส้นทาง 301 (หรือ 302) ไปยังหน้า "ข้อผิดพลาด 404" แยกต่างหากนั่นเป็นวิธีปฏิบัติที่น่ากลัวโดยการสอนแบบ mod_rewrite ที่เลอะเทอะและไม่มีคุณสมบัติการไถ่คืนเมื่อเทียบกับการตอบกลับ 404 โดยตรง:

  • ผู้เข้าชมสับสนเนื่องจาก URL ที่พวกเขาพยายามเข้าชมนั้นถูกแทนที่ด้วย URL ของหน้าข้อผิดพลาด ดังนั้นพวกเขาจึงเห็นข้อความแจ้งว่าพวกเขามาถึงหน้าเว็บที่ไม่มีอยู่จริง แต่ไม่สามารถระบุได้อย่างชัดเจนว่าหน้าเว็บที่พวกเขาพยายามเข้าชมคืออะไรและไม่สามารถลองกลยุทธ์การกู้คืนเช่นแก้ไขข้อผิดพลาดที่ชัดเจนใน URL หรือคัดลอกและวางลงใน Google หรือเครื่อง Wayback

  • อาจทำให้เครื่องมือค้นหาสับสนโดยเฉพาะอย่างยิ่งหากหน้า 404 ของคุณไม่ได้รับอนุญาตใน robots.txtหรือหากได้รับการตอบกลับ 200 OK อย่างไม่ถูกต้องแทนที่จะเป็นรหัสสถานะ 404 จริง ( "soft 404" ) อาจทำให้หน้า 404 ของคุณปรากฏในการค้นหา ผลลัพธ์สำหรับคำค้นหาแบบสุ่ม

  • มันทำให้โหลดเพิ่มจำนวนเล็กน้อย (บนเซิร์ฟเวอร์ของคุณ) เพิ่มเวลาตอบสนองต่อผู้เยี่ยมชมและอาจทำให้เครื่องมือค้นหารวบรวมข้อมูลเว็บไซต์ของคุณช้าลงเนื่องจากทุกคำขอสำหรับหน้าเว็บที่ไม่มีอยู่ (หรือปกปิด) จะเกี่ยวข้องกับ HTTP รอบพิเศษ การเดินทาง

  • ไม่มีประโยชน์ SEO เนื่องจาก "ลิงก์น้ำผลไม้" จากหน้าเว็บที่เปลี่ยนเส้นทางไปยังหน้าเว็บ 404 นั้นจะสูญหายไป

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


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


ในที่สุดฉันก็ตัดสินใจเลือกสิ่งที่คุณแนะนำในส่วนที่สอง ใครก็ตามที่ตกลงบนหน้าโดยไม่มีรหัสที่ถูกต้องจะเห็นหน้า 404 ปกติของฉันและฉันกำลังกลับรหัสสถานะ 404 ในกระบวนการ
WPRookie82

1

ฉันจะใช้noindex,nofollow,noarchiveแท็กในส่วนหัวของหน้าเว็บที่คุณต้องการออกจากการค้นหา

ฉันพบว่าnoarchiveแท็กมีแนวโน้มที่จะดึงสิ่งต่าง ๆ ออกจากการค้นหาได้อย่างรวดเร็วและในขณะที่noindexมันอาจหยุดการค้นหา แต่ถ้ามันอยู่ข้างนอกแล้วคุณต้องล้างออกจากผลการค้นหา

สำหรับคำถามการเข้าถึงของผู้ดูแลระบบคนอื่น ๆ ที่นี่ได้ให้คำแนะนำเกี่ยวกับความปลอดภัยที่ฉันขอแนะนำให้ตรวจสอบ

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