ที่อยู่ IP ของโดเมนสำหรับ www และไม่ใช่ www สำหรับ Canonical URL

ในการจัดการ Canonical URL แนวทางปฏิบัติที่ดีที่สุดคือทำการเปลี่ยนเส้นทาง 301 หรือดีกว่าที่จะมีที่อยู่ IP เดียวกันสำหรับทั้งโดเมน www และไม่ใช่ www

ตัวอย่างเช่น:

Canonical URL/โดเมนที่ต้องการคือ http://example.com

Domain           | A Record
------------------------------------
example.com      | 192.0.2.34
www.example.com  | 192.0.2.34

ฉันเข้าใจว่าผู้คนอาจมีบันทึก CNAME สำหรับ www (นามแฝง เนื่องจาก CNAME เรียกว่า Canonical Name) ไม่แน่ใจว่านี่เป็นแนวทางปฏิบัติที่ดีที่สุดหรือไม่เมื่อเทียบกับการใช้ที่อยู่ IP เดียวกัน

หรือจะดีกว่านี้

Domain           | A Record
------------------------------------
example.com     | 192.0.2.34
*  www.example.com 301 redirect to example.com

person Wasabi Developer    schedule 24.10.2013    source แหล่งที่มา


คำตอบ (3)


กลไกที่คุณอธิบาย (ระเบียน A และ CNAME เทียบกับการเปลี่ยนเส้นทาง 301) เป็นส่วนหนึ่งของโปรโตคอลที่แตกต่างกันสองแบบ (DNS และ HTTP) ระเบียน A และ CNAME ไม่มีส่วนเกี่ยวข้องกับไซต์ที่เซิร์ฟเวอร์ HTTP ของคุณให้บริการสำหรับคำขอที่แตกต่างกัน

ลองดูการกำหนดค่า DNS ที่แตกต่างกันสองแบบ:

การกำหนดค่า 1 (ระเบียน CNAME)

Host             | Type  | Data
-----------------+-------+-------------
example.com      | A     | 192.0.2.34
www.example.com  | CNAME | example.com
  • nslookup example.com แก้ไขเป็น 192.0.2.34
  • nslookup www.example.com แก้ไขเป็น 192.0.2.34

การกำหนดค่า 2 (บันทึก A)

Host             | Type  | Data
-----------------+-------+-------------
example.com      | A     | 192.0.2.34
www.example.com  | A     | 192.0.2.34
  • nslookup example.com แก้ไขเป็น 192.0.2.34
  • nslookup www.example.com แก้ไขเป็น 192.0.2.34

ในทั้งสองกรณี โดเมนตามรูปแบบบัญญัติและโดเมนย่อย www ของคุณแปลงเป็น 192.0.2.34 อย่างไรก็ตาม สิ่งเดียวที่เซิร์ฟเวอร์ HTTP ของคุณจะรับรู้ก็คือได้รับคำขอสำหรับทั้ง example.com และ www.example.com บนที่อยู่ IP เดียวกัน แต่ไม่ทราบว่าคุณใช้ระเบียน A หรือ CNAME สำหรับสิ่งนั้น

TL;DR

คุณต้องใช้การเปลี่ยนเส้นทาง HTTP 301 เพื่อบังคับใช้ canonical example.com ในคำขอ HTTP แต่นั่นไม่เกี่ยวข้องกับการกำหนดค่า DNS ของคุณ

person PoByBolek    schedule 25.10.2013
comment
ขอบคุณสำหรับคำอธิบายโดยละเอียด การเปลี่ยนเส้นทาง HTTP หรือบันทึก A ไปยังเซิร์ฟเวอร์ที่จะทำให้การเปลี่ยนเส้นทางเสร็จสมบูรณ์จะแยกแยะปัญหา URL ตามรูปแบบบัญญัติ คุณเป็นคนใจดี ฉันขอขอบคุณที่สละเวลา - person Wasabi Developer; 25.10.2013
comment
คำอธิบายที่ดี แต่ฉันมีคำถามหนึ่งข้อ จะบังคับให้ใช้ www แทน canonical ได้อย่างไร สำหรับหนึ่งในโดเมนของฉัน ให้บริการเฉพาะโดเมนมาตรฐานเท่านั้น แม้ว่าฉันจะไปที่ www. มันเปลี่ยนเส้นทางไปยัง URL ตามรูปแบบบัญญัติ มีความคิดอะไรบ้าง? - person Saurin Dashadia; 05.08.2016
comment
@SD การเปลี่ยนเส้นทางเกิดจากเว็บเซิร์ฟเวอร์ของคุณ ตรวจสอบการกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณว่ามีการเปลี่ยนเส้นทางจากโดเมน www ไปยังโดเมนมาตรฐานของคุณหรือไม่ และลบออกหากคุณไม่ต้องการ - person PoByBolek; 11.08.2016
comment
@PoByBolek คุณหมายถึงฉันควรตรวจสอบการกำหนดค่า apache หรือไม่ - person Saurin Dashadia; 11.08.2016
comment
@SD ใช่แน่นอน - person PoByBolek; 11.08.2016
comment
@PoByBolek ฉันเพิ่งตรวจสอบ apache.conf, conf-enabled/* และไฟล์ sites-enabled/000-default.conf ฉันไม่พบสิ่งใดที่น่าสงสัย นั่นอาจเป็นเพราะฉันไม่แน่ใจว่าฉันกำลังมองหาอะไร คุณจะช่วยฉันที่นี่ได้ไหม? - person Saurin Dashadia; 13.08.2016
comment
@PoByBolek ฉันเสร็จแล้ว การตั้งค่าทั้งหมดถูกต้อง แต่ URL มาจาก db ฉันโง่. อย่างไรก็ตามขอขอบคุณสำหรับความช่วยเหลือของคุณที่นี่ - person Saurin Dashadia; 13.08.2016
comment
ผิด มันจะยังคงแสดงเป็น www.mydomain.com ฉันไม่เข้าใจว่ามันเป็นคำตอบที่ยอมรับได้อย่างไร ทางออกเดียวที่นี่คือโดย Chetabahana - person Toolkit; 09.07.2018
comment
@Toolkit สนใจที่จะอธิบายรายละเอียดเพิ่มเติมหรือไม่ จากความเข้าใจของฉัน คำตอบของ Chetabahana ช่วยแก้ปัญหาโดยให้ลูกค้าส่งคำขอ HTTP แรกสำหรับ www.mydomain.com ไปยังเซิร์ฟเวอร์ของ เปลี่ยนเส้นทาง center จากนั้นทำการเปลี่ยนเส้นทาง HTTP 301 ไปที่ mydomain.com ดังนั้น คุณจะต้องพึ่งพาโครงสร้างพื้นฐานของผู้อื่นเพื่อให้ได้สิ่งที่คุณสามารถกำหนดค่าเองได้อย่างง่ายดาย - person PoByBolek; 13.07.2018
comment
@PoByBolek ไม่มีวิธีเปลี่ยนเส้นทางโดยใช้ CNAME หาก OP ต้องการ Canonical URL/domain wanted is http://mydomain.cоm ก็มีทางเดียวเท่านั้นที่จะทำการเปลี่ยนเส้นทาง มิฉะนั้น คุณจะจบลงด้วยการแสดงเว็บไซต์บน http://mydomain.cоm และ http://www.mydomain.cоm - person Toolkit; 14.07.2018
comment
@Toolkit นั่นคือสิ่งที่ฉันพูดโดยพื้นฐานใช่ไหม - person PoByBolek; 17.07.2018

คุณอาจลอง redirect.center เปลี่ยนเส้นทางโดเมนโดยใช้ DNS เท่านั้น
ดังนั้นจะตอบสนองการกำหนดค่า DNS ของคุณ:

Domain           | A Record
------------------------------------
example.com      | 192.0.2.34
*  www.example.com 301 redirect to example.com

ตั้งค่าบันทึก DNS ของคุณเป็น:

CNAME | www | example.com.opts-https.redirect.center

หมายเหตุ:
พารามิเตอร์ .opts-https. เปลี่ยนเส้นทางไปยังโดเมน https
หากคุณใช้เพียงโดเมน http ให้ใช้ .opts-uri.

person Chetabahana    schedule 21.02.2018
comment
นี่เป็นวิธีแก้ปัญหาที่ฉันมองหามาตลอดชีวิต :) ขอบคุณ!! - person Toolkit; 09.07.2018

ใน DNS บันทึกชื่อมาตรฐานจะชี้ไปที่ "รายการ DNS จริงหนึ่งรายการ" ผลลัพธ์ที่ได้คือ DNSName1 มีที่อยู่ IP เดียวกันกับ DNSName2

ความเข้าใจมีความซับซ้อนเนื่องจากข้อเท็จจริงที่ว่า CNAME ไม่ใช่ชื่อมาตรฐาน เรกคอร์ด CName ชี้ไปที่ชื่อมาตรฐาน (ชื่อตามรูปแบบบัญญัติคือระเบียน A)

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

การเปลี่ยนเส้นทาง 301 (http): สำหรับเครื่องมือค้นหา ข้อความระบุว่าหน้า x ถูกแทนที่ด้วยหน้า y และอันดับการค้นหาทั้งหมดสามารถโอนไปยังหน้า y ได้ หากเป็นการกำหนดมาตรฐานชื่อโดเมนแบบ "สวยงาม" ก็จะแจ้งให้เครื่องมือค้นหาจัดทำดัชนีเพียงหน้าเดียวเท่านั้นและเป็นอีกวิธีหนึ่งที่จะแสดงว่าคุณไม่ได้พยายามหลอกเครื่องมือค้นหา

person PeterO    schedule 27.03.2017