ลูกค้าควรประพฤติตนแตกต่างกันหรือไม่? อย่างไร?
ลูกค้าควรประพฤติตนแตกต่างกันหรือไม่? อย่างไร?
คำตอบ:
สถานะ 301 หมายความว่าทรัพยากร (หน้า) ถูกย้ายอย่างถาวรไปยังตำแหน่งใหม่ ลูกค้า / เบราว์เซอร์ไม่ควรพยายามขอตำแหน่งเดิม แต่ใช้ตำแหน่งใหม่นับจากนี้เป็นต้นไป
สถานะ 302 หมายความว่าทรัพยากรอยู่ที่อื่นชั่วคราวและไคลเอนต์ / เบราว์เซอร์ควรร้องขอ URL เดิมต่อไป
เมื่อสไปเดอร์ของเครื่องมือค้นหาค้นหารหัสสถานะ 301 ในส่วนหัวการตอบสนองของหน้าเว็บมันเข้าใจว่าหน้าเว็บนี้ไม่มีอยู่อีกต่อไปค้นหาส่วนหัวของตำแหน่งในการตอบสนองเลือก URL ใหม่และแทนที่ URL ที่จัดทำดัชนีด้วยอันใหม่ .
ดังนั้นเครื่องมือค้นหาจะรีเฟรช URL ที่จัดทำดัชนีทั้งหมดซึ่งไม่มีอยู่แล้ว (พบ 301 รายการ) ด้วย URL ใหม่สิ่งนี้จะรักษาปริมาณการเข้าชมหน้าเว็บเก่าของคุณและจะเปลี่ยนเป็นหน้าใหม่ (คุณจะไม่สูญเสียการเข้าชมหน้าเว็บเก่า)
เบราว์เซอร์: หากเบราว์เซอร์พบรหัสสถานะ 301 จากนั้นแคชจะทำการแมป URL เก่ากับ URL ใหม่ไคลเอ็นต์ / เบราว์เซอร์จะไม่พยายามขอตำแหน่งเดิม แต่ใช้ตำแหน่งใหม่นับจากนี้ไปเว้นแต่จะล้างแคช
เมื่อเดอร์เครื่องมือค้นหาพบ 302 สถานะสำหรับเว็บเพจมันจะเปลี่ยนเส้นทางไปยังตำแหน่งใหม่ชั่วคราวและรวบรวมข้อมูลทั้งสองหน้า URL หน้าเว็บเก่ายังคงมีอยู่ในฐานข้อมูลของเครื่องมือค้นหาและจะพยายามขอตำแหน่งเดิมและรวบรวมข้อมูล ลูกค้า / เบราว์เซอร์จะยังคงพยายามขอตำแหน่งเดิม
อ่านเพิ่มเติมเกี่ยวกับวิธีใช้งานใน asp.net c # และผลกระทบต่อเครื่องมือค้นหาคืออะไร - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html
301 และ 302 ส่วนใหญ่มีความสำคัญต่อการจัดทำดัชนีในเครื่องมือค้นหาเนื่องจากโปรแกรมรวบรวมข้อมูลใช้ข้อมูลนี้และโอน PageRank เมื่อใช้ 301
ดูคำตอบของ Peter Leeสำหรับรายละเอียดเพิ่มเติม
301 คือทรัพยากรที่ร้องขอได้รับการกำหนด URI ถาวรใหม่และการอ้างอิงใด ๆ ในอนาคตไปยังทรัพยากรนี้ควรทำโดยใช้หนึ่งใน URI ที่ส่งคืน
302 คือทรัพยากรที่ร้องขอนั้นอยู่ภายใต้ URI อื่นชั่วคราว
เนื่องจากการเปลี่ยนเส้นทางอาจมีการเปลี่ยนแปลงในบางโอกาสลูกค้าควรใช้ Request-URI ต่อไปสำหรับคำขอในอนาคต
การตอบสนองนี้จะสามารถเข้าถึงได้หากระบุโดยเขตข้อมูลส่วนหัวควบคุมแคชหรือหมดอายุ
<?php header("location: http://example.com/new.php"); ?>
และไฟล์ new.php - <?php echo 'I am new'; ?>
และไปที่การเชื่อมโยง จะมีการเปลี่ยนเส้นทางและแสดงข้อความ "ฉันใหม่" จากนั้นให้เปลี่ยนรหัสใน old.php ไป<?php echo 'I am old'; ?>
และไปที่การเชื่อมโยง คุณจะเห็นข้อความ "ฉันแก่แล้ว" หากคุณทำการเปลี่ยนเส้นทาง 301 ใน old.php คุณจะเห็นข้อความ "ฉันใหม่" แม้หลังจากการเปลี่ยนแปลงในรหัสของ old.php
webcomic.com/latest
และเปลี่ยนเส้นทางไปwebcomic.com/some-comic-title
ที่ 301 ด้วยเบราว์เซอร์จะเปลี่ยนเส้นทางไปยัง "some-comic-title" แม้ว่าจะมีการตีพิมพ์การ์ตูนเรื่องต่อไปและตอนนี้ "ล่าสุด" ก็เปลี่ยนเส้นทางไปยัง "อีกชื่อการ์ตูน" ... นี่คือสิ่งที่ 302 จะดีกว่า
การเปลี่ยนเส้นทาง 301 ถูกแคชอย่างไม่มีกำหนด (อย่างน้อยในบางเบราว์เซอร์)
ซึ่งหมายความว่าหากคุณตั้งค่า 301 ให้ไปที่หน้านั้นคุณไม่เพียง แต่ได้รับการเปลี่ยนเส้นทาง แต่การเปลี่ยนเส้นทางนั้นจะถูกแคช
เมื่อคุณเยี่ยมชมหน้านั้นอีกครั้งเบราว์เซอร์ * ของคุณไม่สนใจที่จะขอ URL นั้น แต่เพียงไปที่เป้าหมายการเปลี่ยนเส้นทางที่แคชไว้
วิธีเดียวที่จะยกเลิก 301 สำหรับผู้เข้าชมที่เปลี่ยนเส้นทางใน Cache นั้นคือการเปลี่ยนเส้นทางกลับไปที่ URL เดิม ** ในกรณีนี้เบราว์เซอร์จะสังเกตเห็นลูปและสุดท้ายก็ขอ URL ที่ป้อนจริงๆ
เห็นได้ชัดว่านั่นไม่ใช่ตัวเลือกถ้าคุณตัดสินใจที่จะ 301 บน Facebook หรือทรัพยากรอื่น ๆ ที่คุณไม่สามารถควบคุมได้อย่างเต็มที่
น่าเสียดายที่ผู้ให้บริการโฮสติ้งหลายแห่งมีคุณสมบัติในส่วนต่อประสานผู้ดูแลระบบของพวกเขาที่เรียกว่า "การเปลี่ยนเส้นทาง" ซึ่งจะเปลี่ยนเส้นทาง 301 หากคุณกำลังใช้สิ่งนี้เพื่อเปลี่ยนเส้นทางโดเมนของคุณไปที่ Facebook เป็นการชั่วคราวในเร็ว ๆ นี้คุณจะถูกทำให้ตกใจโดยทั่วไป
* อย่างน้อย Chrome และ Firefox ตามที่เบราว์เซอร์ทำแคช HTTP 301s นานเท่าใด . เพิ่งลองกับ Chrome 45 แก้ไข: Safari 7.0.6 บน Mac ยังแคชอยู่การรีสตาร์ทเบราว์เซอร์ก็ไม่ได้ช่วย (ลิงก์บอกว่าบน Safari 5 บน Windows จะช่วยได้)
** ฉันลอง javascript window.location = ''
เพราะมันจะเป็นวิธีแก้ปัญหาที่สามารถนำไปใช้ในกรณีส่วนใหญ่ - มันไม่ทำงาน มันส่งผลให้เกิดการวนซ้ำไม่สิ้นสุด อย่างไรก็ตาม PHP header('Location: new.url')
จะทำลายลูป
Bottom Line: ใช้ 301s เท่านั้นหากคุณมั่นใจอย่างแน่นอนว่าคุณจะไม่ใช้ URL นั้นอีก มักจะไม่เคยอยู่บน root dir (example.com/)
ปัญหาหลักของ 301 คือเบราว์เซอร์จะแคชการเปลี่ยนเส้นทางแม้ว่าคุณจะปิดการใช้งานการเปลี่ยนเส้นทางจากระดับเซิร์ฟเวอร์
จะดีกว่าเสมอที่จะใช้ 302 หากคุณเปิดใช้งานการเปลี่ยนเส้นทางสำหรับช่วงเวลาการบำรุงรักษาสั้น ๆ