เปลี่ยนเส้นทาง php.ini ไม่ทันเวลา การเปลี่ยนเส้นทาง PHP ของลิงก์ภายนอก เปลี่ยนเส้นทางด้วยการหน่วงเวลาและตัวจับเวลานับถอยหลัง การซ่อนลิงก์ผู้อ้างอิง

แก้ไขล่าสุดเมื่อ 25 กุมภาพันธ์ 2017 โดย Vincy

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

PHP มีฟังก์ชันที่กำหนดไว้ล่วงหน้า ชื่อ header() สำหรับการเปลี่ยนเส้นทาง URL เมื่อใช้ฟังก์ชัน header() นี้ เราจำเป็นต้องส่งส่วนหัวของตำแหน่งโดยระบุ URL ที่ควรเปลี่ยนเส้นทางเพจไป

ต่างจากที่มีหลายวิธีในการจัดการกับการเปลี่ยนเส้นทาง URL โดยขึ้นอยู่กับเบราว์เซอร์ PHP หลีกเลี่ยงความสับสนดังกล่าวและมีฟังก์ชัน header() ที่สร้างเอฟเฟกต์เดียวกันในเบราว์เซอร์ทั้งหมด สำหรับเรื่องนั้นเท่านั้น เราได้สรุปบทความการเปลี่ยนเส้นทาง JavaScript ว่า ฝั่งเซิร์ฟเวอร์การเปลี่ยนเส้นทางจะดีกว่า

ส่วนหัวของไวยากรณ์การเปลี่ยนเส้นทาง PHP ("ตำแหน่ง: URL เป้าหมาย");

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

หมายเหตุ: ก่อนที่จะระบุ URL ของหน้าสำหรับส่วนหัวของสถานที่ เราควรตรวจสอบให้แน่ใจว่ามีหน้านั้นอยู่

ข้อควรระวังก่อนเปลี่ยนเส้นทาง

ก่อนที่จะดำเนินการเปลี่ยนเส้นทาง PHP เราควรตรวจสอบให้แน่ใจว่าไม่มีการส่งออกไปยังเบราว์เซอร์ก่อนบรรทัดที่เราเรียกใช้ฟังก์ชัน header() ตัวอย่างเช่น,

Echo "การเปลี่ยนเส้นทาง PHP"; header("ตำแหน่ง: ไซต์");

สคริปต์นี้จะแสดงคำเตือนต่อไปนี้ไปยังเบราว์เซอร์

คำเตือน: ไม่สามารถแก้ไขข้อมูลส่วนหัวได้ - ส่วนหัวได้ส่งไปแล้วโดย (...

ไม่เพียงแต่ใช้ได้กับฟังก์ชันส่วนหัวเท่านั้น แต่ยังใช้ได้กับฟังก์ชัน PHP ทั้งหมด เช่น set_cookie(), session_start() และอื่นๆ อะไรก็ตามที่สามารถปรับเปลี่ยนส่วนหัวได้ ด้วยเหตุนี้ เราควรลบเนื้อหาทั้งหมดที่จะหยุดส่งส่วนหัวของตำแหน่งไปยังเบราว์เซอร์

วิธีที่เป็นไปได้ในการส่งเอาต์พุต
  • เนื้อหา HTML เช่น ข้อความหรือแท็ก
  • ช่องว่างสีขาวที่ไม่จำเป็นก่อนตัวคั่น PHP
  • ข้อผิดพลาด PHP หรือการแจ้งเตือนที่เกิดขึ้นก่อนที่จะเรียกการเปลี่ยนเส้นทาง
  • PHP เช่น echo() พิมพ์()
มาตรการความปลอดภัยจากการส่งออกก่อนที่จะเปลี่ยนเส้นทาง PHP
  • เนื่องจากควรส่งเนื้อหา HTML ก่อนการเปลี่ยนเส้นทาง เราจึงสามารถแยกตรรกะ PHP ออกจากเนื้อหา HTML ได้
  • สำหรับการอยู่ในด้านความปลอดภัยเราก็ใส่ได้ ออกคำสั่งหลังจากคำสั่งเปลี่ยนเส้นทางของ ไฟล์ PHP- ตัวอย่างเช่น header("Location: website"); ออก;
  • เราสามารถเปิดใช้งานการบัฟเฟอร์เอาต์พุต PHP เพื่อหยุดการส่งเอาต์พุตไปยังเบราว์เซอร์และเก็บไว้ในบัฟเฟอร์แทน
การเปลี่ยนเส้นทาง 301 คืออะไร

การเปลี่ยนเส้นทาง 301 หรือการเปลี่ยนเส้นทาง 301 (จากการเปลี่ยนเส้นทางภาษาอังกฤษ) -นี่คือการบังคับเปลี่ยนเส้นทางของผู้ใช้จาก URL หนึ่งไปยังอีก URL หนึ่ง นอกจากนี้ ที่อยู่ทั้งสองสามารถเป็นของชื่อโดเมนเดียวกันหรือต่างกันก็ได้

พูดง่ายๆ. ผู้ใช้บริการเข้ามา แถบที่อยู่เบราว์เซอร์ (หรือตามลิงค์)หนึ่ง ที่อยู่ URLแต่ไปจบลงที่อีกอันหนึ่งโดยอัตโนมัติ

เกิดอะไรขึ้นในขณะนี้?

การเปลี่ยนเส้นทางเกิดขึ้นโดยใช้การเปลี่ยนเส้นทาง 301 มันทำงานดังนี้

บุคคลป้อน URL ในแถบที่อยู่ (หรือคลิกที่ไฮเปอร์ลิงก์)

เซิร์ฟเวอร์รับคำขอพร้อมที่อยู่ URL และเริ่มประมวลผล

ขณะประมวลผลคำขอ จะพบคำสั่ง เปลี่ยนเส้นทางและปฏิบัติตามคำแนะนำของเธอ

ส่ง URL ใหม่ที่ระบุในคำแนะนำและการตอบกลับ 301 ให้กับผู้ใช้

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

เหตุใดคุณจึงต้องมีการเปลี่ยนเส้นทาง 301

ดังที่เราได้ทราบไปแล้ว การเปลี่ยนเส้นทาง 301 ใช้เพื่อเปลี่ยนเส้นทางจากที่อยู่หนึ่งไปยังอีกที่อยู่หนึ่ง โดยพื้นฐานแล้วสิ่งนี้จำเป็นในกรณีต่อไปนี้

    ที่อยู่เพจมีการเปลี่ยนแปลงอย่างถาวร ดังนั้นคุณต้องเปลี่ยนเส้นทางผู้ใช้ไปยัง URL ปัจจุบัน

    โดเมนเว็บไซต์มีการเปลี่ยนแปลง ดังนั้นคุณจึงต้องเปลี่ยนเส้นทางผู้คนไปที่ โดเมนใหม่;

    เนื้อหาเดียวกันมีหลาย URL กล่าวคือ ซ้ำกัน

    เมื่อใช้บริการออนไลน์ แบบฟอร์ม โมดูล และองค์ประกอบเชิงโต้ตอบอื่นๆ ของไซต์ จำเป็นต้องมีการเปลี่ยนเส้นทาง

แน่นอนว่านี่ไม่ใช่รายการวิธีที่คุณสามารถใช้การเปลี่ยนเส้นทาง 301 ได้ทั้งหมด แต่นี่เป็นรายการพื้นฐาน

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

จะทำการเปลี่ยนเส้นทาง 301 ได้อย่างไร?

การสร้างการเปลี่ยนเส้นทาง 301 นั้นเป็นงานที่ค่อนข้างง่าย ไม่มีอัลกอริธึมที่สับสนและ โครงสร้างที่ซับซ้อน- คุณเพียงแค่ต้องเรียนรู้ไวยากรณ์และเข้าใจหลักการทำงานบางประการ

ด้านล่างนี้เราจะอธิบายวิธีพื้นฐานจำนวนหนึ่งในการสร้างการเปลี่ยนเส้นทาง 301 ซึ่งแตกต่างกันในการดำเนินการ แต่ให้ผลลัพธ์ที่เหมือนกัน

301 เปลี่ยนเส้นทางใน .htaccess (Apache)

การสร้างการเปลี่ยนเส้นทาง 301 ในไฟล์ .htaccess เป็นวิธีที่ได้รับความนิยมมากที่สุดในการเปลี่ยนเส้นทาง มันค่อนข้างง่ายและพร้อมใช้งานสำหรับผู้ใช้ทุกคนที่ใช้ Apache เป็นเซิร์ฟเวอร์

ไฟล์ .htaccess อยู่ในไดเร็กทอรีรากของไซต์ของคุณ คุณสามารถไปถึงที่นั่นได้ การเชื่อมต่อเอฟทีพีหรือตัวจัดการไฟล์ซึ่งมีให้บริการจากผู้ให้บริการโฮสติ้งเกือบทุกราย

โปรดทราบว่าชื่อไฟล์เริ่มต้นด้วยอักขระบริการ - จุด ในบางส่วน ระบบไฟล์เอกสารดังกล่าวจะถูกซ่อนไว้ตามค่าเริ่มต้น ในกรณีนี้ คุณต้องเปลี่ยนการตั้งค่าเพื่อดู .htaccess

เราจะไม่วิเคราะห์รายละเอียดคำแนะนำทั้งหมดในไฟล์ .htaccess เราจะพิจารณาเฉพาะคำแนะนำที่เกี่ยวข้องกับการเปลี่ยนเส้นทาง 301 เท่านั้น

ขั้นแรก คุณต้องตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งโมดูล mod_rewrite แล้ว เนื่องจากโมดูลนี้มีหน้าที่ในการเปลี่ยนเส้นทาง URL ในเรื่องนี้ คุณสามารถติดต่อผู้ให้บริการโฮสต์ของคุณ หรือค้นหาและตรวจสอบไฟล์การกำหนดค่า Apache (httpd.conf) ด้วยตัวเอง

กำลังเตรียม .htaccess สำหรับการทำงาน

สร้างหรือเปิดไฟล์ .htaccess ที่มีอยู่ เราเขียนบรรทัดต่อไปนี้ลงไป:

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

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

เขียนใหม่เครื่องยนต์บน

รายการนี้จะเปิดใช้งานโมดูล mod_rewrite

เราเขียนบรรทัดต่อไปนี้:

เขียนใหม่ฐาน /

คำสั่งเช่นนี้จะตั้งค่า URL พื้นฐาน โดยปกติแล้วนี่คือโดเมนของตัวเอง เช่น http://example.ru มาจากที่อยู่ที่กำหนดไว้ซึ่งเราจะเป็นฐานการทำงานต่อไปของเรา

หากคุณเขียนทุกอย่างถูกต้อง ผลลัพธ์จะเป็นไฟล์ต่อไปนี้:

เพียงเท่านี้ .htaccess ของเราก็พร้อมที่จะเพิ่มการเปลี่ยนเส้นทางแล้ว

เพิ่มไปที่. htaccess เปลี่ยนเส้นทาง

มีคำแนะนำพื้นฐานสองประการที่สามารถใช้เพื่อเปลี่ยนเส้นทาง:

Redirect 301 เป็นการเปลี่ยนเส้นทางประเภทที่ง่ายที่สุด ออกแบบมาเพื่อเปลี่ยนเส้นทางจากหน้าหนึ่งไปอีกหน้าหนึ่งทั้งภายในโดเมนเดียวและภายในหลายโดเมน ที่อยู่โดเมน- ทำงานร่วมกับ URL ที่ไม่มีพารามิเตอร์

RewriteCond / RewriteRule - ยืดหยุ่นมากขึ้นและ กฎที่ซับซ้อนเปลี่ยนเส้นทาง โดยทั่วไปใช้สำหรับการเปลี่ยนเส้นทางจำนวนมาก

ตอนนี้เกี่ยวกับแต่ละรายละเอียดเพิ่มเติม

เปลี่ยนเส้นทาง 301

คำแนะนำที่ง่ายที่สุดในทุกแง่มุม ไวยากรณ์ของมันพอดีกับบรรทัดเดียว:

เปลี่ยนเส้นทาง 301

มีเพียงช่องว่างเดียวระหว่างที่อยู่ ไม่มีจุด ยัติภังค์ หรืออักขระของบุคคลที่สามอื่นๆ

ตัวอย่างการใช้การเปลี่ยนเส้นทาง:

เปลี่ยนเส้นทาง 301 /old-page.html http://example.ru/new-page.html

ในไฟล์ดูเหมือนว่านี้:

นั่นคือทั้งหมดที่คุณต้องรู้เกี่ยวกับคำแนะนำนี้

กฎการเขียนใหม่ (RewriteCond)

เป็นคำสั่งผสมที่แบ่งออกเป็น 2 คำสั่งหลัก

RewriteCond - ตั้งค่าเงื่อนไขสำหรับคำสั่ง RewriteRule ต่อไปนี้ ไม่สามารถใช้แยกกันได้

RewriteRule — อธิบายกฎสำหรับการเปลี่ยน URL

มาดูตัวอย่างการใช้งานกันได้เลย ด้านล่างนี้เป็นส่วนหนึ่งของไฟล์ .htaccess ข้อความนี้รับผิดชอบการเปลี่ยนเส้นทาง 301 จากโดเมนที่ไม่มี WWW ไปยังโดเมนที่มี WWW

มาดูกันทีละบรรทัดครับ

# เริ่มต้น WordPress RewriteEngine บน RewriteCond %(HTTP_HOST) ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1

1 บรรทัด ข้อความแสดงความคิดเห็น ความคิดเห็นในไฟล์ .htaccess ขึ้นต้นด้วย “#” ไม่มีผลกระทบต่อการทำงานของไฟล์แต่อย่างใด

2 บรรทัด. กำลังตรวจสอบการมีอยู่ของโมดูล mod_rewrite

3 บรรทัด. การเปิดใช้งานโมดูล mod_rewrite

4 บรรทัด. คำสั่ง RewriteCond ตรวจสอบว่ามี "www" ที่จุดเริ่มต้นของที่อยู่หรือไม่ ถ้าไม่เช่นนั้น RewriteRule ที่อยู่ด้านล่างจะถูกทริกเกอร์

5 บรรทัด. คำสั่ง RewriteRule เปลี่ยนเส้นทางไปที่ "www"

6 บรรทัด. จุดสิ้นสุดของคอนเทนเนอร์กำลังตรวจสอบการมีอยู่ของโมดูล mod_rewrite

เราจะไม่อธิบายรายละเอียดเกี่ยวกับไวยากรณ์และคำสั่งที่เป็นไปได้ทั้งหมดที่ใช้ในการทำงานกับไฟล์ .htaccess ในบทความนี้ เนื่องจากนี่เป็นหัวข้อที่เป็นสากลและไม่ใช่ SEO คุณสามารถดูตัวอย่างการเปลี่ยนเส้นทางได้

301 เปลี่ยนเส้นทางโดยใช้ PHP

นอกจากไฟล์ .htaccess แล้ว การเปลี่ยนเส้นทาง 301 ยังสามารถทำได้โดยใช้ PHP สาระสำคัญของวิธีนี้นั้นง่ายมากและใช้ส่วนหัวที่เซิร์ฟเวอร์ส่งไปยังคำขอของลูกค้า

หากต้องการเปลี่ยนเส้นทาง คุณต้องเขียนลงในเอกสาร รหัส PHPเนื้อหาต่อไปนี้:

ดังนั้นเมื่อเข้าถึงเพจ ลูกค้าจะได้รับส่วนหัวที่เราต้องการซึ่งมีการเปลี่ยนเส้นทาง

โปรดทราบว่าก่อนที่จะเรียกส่วนหัว ไม่ควรพิมพ์สิ่งใด มิฉะนั้นคุณจะได้รับข้อผิดพลาด มันเกี่ยวกับเกี่ยวกับ "เสียงสะท้อน" หรือ "การพิมพ์" ทางที่ดีควรวางโค้ดนี้ไว้ที่จุดเริ่มต้นของสคริปต์

และนี่คือตัวเลือกสำหรับบันทึกพารามิเตอร์คำขอและที่อยู่หน้าทั้งหมด (นั่นคือโดเมนจะมีการเปลี่ยนแปลง แต่ URL ที่เหลือจะยังคงเหมือนเดิม):

วิธีการเปลี่ยนเส้นทางนี้ค่อนข้างใช้งานง่าย แต่มีข้อเสียอย่างมาก ต้องเพิ่มโค้ดจริงสำหรับแต่ละเพจที่คุณต้องการเปลี่ยนเส้นทาง

301 เปลี่ยนเส้นทางใน Nginx

เราจะไม่พิจารณารายละเอียดถึงความแตกต่างทั้งหมดของการตั้งค่าการเปลี่ยนเส้นทาง 301 ใน nginx เนื่องจากนี่เป็นหัวข้อที่เป็นสากลและห่างไกลจากการส่งเสริม SEO มาดูการเปลี่ยนเส้นทางยอดนิยมบางส่วนกัน

301 เปลี่ยนเส้นทางจาก http ไปยัง https สำหรับ Nginx

หลังจากขั้นตอนเหล่านี้ เครื่องมือค้นหาจะเข้าใจว่ามิเรอร์ใดที่ควรมีส่วนร่วมในการค้นหา และผู้ใช้จะสลับไปที่ https เสมอ

การเปลี่ยนเส้นทาง 301 เท่านั้นที่สามารถรวมชื่อโดเมนได้

ฟังก์ชั่น 4. นำ URL มาอยู่ในรูปแบบเดียว

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

ตัวอย่างเช่น ในไซต์ของเรา URL ทั้งหมดจะมีเครื่องหมายทับที่ท้ายบรรทัด เมื่อที่อยู่ที่ไม่มีเครื่องหมายทับปรากฏขึ้น การเปลี่ยนเส้นทางจะถูกสร้างขึ้นโดยอัตโนมัติ


301 เปลี่ยนเส้นทางหรือ rel=”canonical”

อย่างน้อยในบางกรณี แอตทริบิวต์ rel=”canonical” ถือเป็นทางเลือกแทนการเปลี่ยนเส้นทาง 301 เรามาดูกันว่าสิ่งนี้เป็นจริงหรือไม่

โปรดจำไว้ว่า rel="canonical" ช่วยให้คุณสามารถระบุ URL หลักของหน้าให้เครื่องมือค้นหาทราบได้ อ่านเพิ่มเติมเกี่ยวกับ คุณสมบัติที่กำหนดเราเขียนไว้ก่อนหน้านี้

ก่อนอื่นคุณต้องเข้าใจความแตกต่างระหว่างวิธีการเหล่านี้ก่อน เพื่อจุดประสงค์นี้ เราได้สร้างตารางต่อไปนี้

ดังที่เห็นได้จากตาราง ความแตกต่างระหว่างเครื่องมือต่างๆ นั้นมากเกินกว่าที่จะพิจารณาว่าเป็นทางเลือกแทนกันได้ แต่ละคนได้รับการออกแบบมาเพื่อแก้ไขปัญหาของตัวเอง

หน้าที่หลักอย่างหนึ่งของการเปลี่ยนเส้นทาง 301 ซึ่งไม่สามารถหลีกเลี่ยงได้ใน SEO คือการติดกาวมิเรอร์

มิเรอร์ของเครื่องมือค้นหาคือไซต์ที่มีเนื้อหาเหมือนกัน (หรือสำเนาเนื้อหาบางส่วน)สามารถดูได้ที่ URL ที่แตกต่างกัน น่าแปลกที่เกือบทุกไซต์บนอินเทอร์เน็ตมีมิเรอร์ ประเด็นก็คือสำหรับเครื่องมือค้นหา โดเมนที่มี www และไม่มี www นั้นเป็นที่อยู่ที่แตกต่างกัน

นั่นคือ www..ru สำหรับเครื่องมือค้นหานั้นเป็น URL ที่แตกต่างกันซึ่งมีเนื้อหาเดียวกัน กรณีนี้ได้รับความนิยมอย่างมากจน Yandex Webmaster มีส่วน "การย้ายไซต์" ซึ่งคุณสามารถเลือกมิเรอร์หลักที่จะอยู่ในการค้นหา แน่นอนว่าการเปลี่ยนเส้นทางไม่ปรากฏในกรณีนี้ คำแนะนำเหล่านี้มีไว้สำหรับหุ่นยนต์เครื่องมือค้นหาเท่านั้น

ในกรณีของ www การเปลี่ยนเส้นทาง 301 มักจะไม่ได้รับการตั้งค่า เนื่องจากโดเมนจะได้รับการยอมรับโดยอัตโนมัติว่าเป็นมิเรอร์ แม้ว่าจะมีความเป็นไปได้อยู่และบางครั้งก็จำเป็นด้วยซ้ำ เกี่ยวกับการเปลี่ยนเส้นทางจาก www ไปโดยไม่มี www เรา

ในกรณีอื่นๆ ทั้งหมด จำเป็นต้องมีการเปลี่ยนเส้นทางสำหรับการติดกาว

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

มีวิธีแก้ไข: คุณต้องรวมโดเมนใหม่เข้ากับโดเมนที่มีอยู่ ในกรณีนี้ ที่อยู่ที่อัปเดตควรกลายเป็นที่อยู่หลักและปรากฏในผลการค้นหา การเปลี่ยนเส้นทาง 301 จะช่วยเราในเรื่องนี้ คุณต้องแนบโดเมนใหม่เข้ากับไซต์ จากนั้นสร้างการเปลี่ยนเส้นทาง 301 จาก URL ทั้งหมดที่มีชื่อโดเมนเก่าไปยัง URL ที่เกี่ยวข้องด้วยชื่อโดเมนใหม่ เกี่ยวกับวิธีการทำเช่นนี้

เป็นเรื่องที่คุ้มที่จะบอกว่าหลังจากขั้นตอนนี้ TIC "link Juice" และ "อันธพาล" อื่นๆ จะถูกโอนไปยังโดเมนใหม่

หลังจากการอัปเดตไม่กี่ครั้ง โดเมนใหม่จะปรากฏในผลการค้นหา ไซต์ต่างๆ จะได้รับการยอมรับว่าเป็นกระจกเงา และตำแหน่งและการมองเห็นควรคงไว้

ความแตกต่างระหว่างการเปลี่ยนเส้นทาง 301 และ 302

จากมุมมองของ SEO การเปลี่ยนเส้นทาง 301 นั้นแตกต่างโดยพื้นฐานจาก 302 แม้ว่าไวยากรณ์จะคล้ายกันมาก แต่ก็มีความหมายที่แตกต่างกันโดยสิ้นเชิงสำหรับเครื่องมือค้นหา นี่คือความแตกต่างหลัก:

การเปลี่ยนเส้นทาง 301 (การเปลี่ยนเส้นทางถาวร) - การเคลื่อนไหวของหน้าถาวร

การเปลี่ยนเส้นทาง 302 (การเปลี่ยนเส้นทางชั่วคราว) - การเคลื่อนไหวชั่วคราวของเพจ

ความแตกต่างและหลักการใช้งานทั้งหมดเป็นไปตามนี้

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

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

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

เมื่อใดจึงควรใช้การเปลี่ยนเส้นทาง 302

การใช้การเปลี่ยนเส้นทาง 302 นั้นสมเหตุสมผลในกรณีที่จำเป็นต้องเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าอื่นบนเว็บไซต์เป็นการชั่วคราว นี่คือตัวอย่างของสถานการณ์ดังกล่าว

  • ปลั๊กอินการเปลี่ยนเส้นทาง 301 อย่างง่าย

    หลักการติดตั้งจะเหมือนกับการเปลี่ยนเส้นทางทุกประการ ในการค้นหาปลั๊กอินคุณต้องค้นหา:

    หลังจากเปิดใช้งานปลั๊กอินแล้วทางด้านซ้าย เมนูเวิร์ดเพรสในส่วน "การตั้งค่า" ลิงก์ "301 การเปลี่ยนเส้นทาง" จะปรากฏขึ้น เราติดตามและไปที่หน้าที่มีสองช่อง

    ฟิลด์แรกคือตำแหน่งที่เราตั้งค่าการเปลี่ยนเส้นทาง ฟิลด์ที่สองคือตำแหน่ง ไม่มีการตั้งค่าที่ซับซ้อน ทุกอย่างง่ายที่สุด

    301 เปลี่ยนเส้นทางใน Joomla!

    เพื่อสร้างการเปลี่ยนเส้นทาง 301 ใน Joomla! 3 มีส่วนประกอบมาตรฐานอยู่แล้ว คุณสามารถค้นหาได้โดยขยายเมนู "ส่วนประกอบ" -> "การเปลี่ยนเส้นทาง"

    หลังจากการเปลี่ยนแปลง คุณจะเห็นการเปลี่ยนเส้นทางที่มีอยู่ทั้งหมด ถ้ามี

    หากต้องการสร้างใหม่ คุณต้องคลิกที่ปุ่ม "สร้าง" และกรอกข้อมูลทั้งหมด ช่องที่ต้องกรอก (มีเครื่องหมายดอกจัน)

    การเปลี่ยนเส้นทางควรทำงานทันทีหลังจากบันทึก หากไม่เกิดขึ้น คุณต้องทำตามขั้นตอนด้านล่างนี้

    จะทำอย่างไรถ้ามีการเปลี่ยนเส้นทาง 301 ใน Joomla! ไม่ทำงานเหรอ?

    หากเมื่อใช้ส่วนประกอบการเปลี่ยนเส้นทางมาตรฐานใน Joomla! 3 การเปลี่ยนเส้นทางไม่ทำงาน คุณต้อง:

    เปิดไฟล์ configuration.php ที่อยู่ในโฟลเดอร์รูทของเว็บไซต์ของคุณ

    ค้นหาตัวแปรสาธารณะ $live_site;

    กำหนดโดเมนของเว็บไซต์ของคุณเป็นมูลค่า

    บันทึกการเปลี่ยนแปลงและตรวจสอบการเปลี่ยนเส้นทาง

    301 เปลี่ยนเส้นทางใน Opencart 2

    สำหรับ Opencart 2 มีโมดูลสำเร็จรูปที่ให้คุณสร้างการเปลี่ยนเส้นทางถาวรได้ ชื่อของมันคือ “301 Redirect Manager”

    รองรับการเปลี่ยนเส้นทาง 301 ทุกประเภท และเข้ากันได้กับ Opencart 2.x ทุกเวอร์ชัน

    โมดูลนี้อาจขัดแย้งกับส่วนขยาย SEO ที่ติดตั้งไว้ก่อนหน้านี้ ดังนั้นโปรดอ่านคำแนะนำก่อนซื้อและติดตั้ง

    อย่าลืมว่าระบบ CMS ใดๆ รวมถึง Opencart รองรับการเปลี่ยนเส้นทางที่สร้างขึ้นด้วยตนเองในหรือผ่าน

    301 การเปลี่ยนเส้นทางใน Modx

    Modx Revo มีมากมาย โซลูชั่นสำเร็จรูปการดำเนินการเปลี่ยนเส้นทาง 301 หนึ่งในนั้นคือตัวเปลี่ยนเส้นทาง การติดตั้งและใช้งานส่วนขยายนี้เป็นเรื่องง่าย อย่างไรก็ตาม หากพบปัญหาสามารถศึกษาคำถามโดยละเอียดได้ที่ หน้าอย่างเป็นทางการ https://docs.modx.com/extras/revo/redirector

    301 เปลี่ยนเส้นทางสำหรับ Wix

    Wix มีฟีเจอร์มาตรฐานที่ให้คุณเปลี่ยนเส้นทาง 301 ได้ คุณไม่จำเป็นต้องประดิษฐ์อะไรเลย เพียงทำตามคำแนะนำด้านล่าง

    ไปที่โหมดการจัดการไซต์

    ค้นหาส่วน SEO และไปที่ส่วนนั้น

    เลื่อนหน้าลงไปที่บล็อก “การเปลี่ยนเส้นทาง: 301 เปลี่ยนเส้นทาง”;

    คลิก "ตั้งค่าการส่งต่อ";

    ป้อน URL เก่าและใหม่ในฟิลด์ที่เหมาะสม

    เราตรวจสอบการทำงานของการส่งต่อ

    การเปลี่ยนเส้นทางทั่วไป

    ด้านล่างนี้เราได้รวบรวมตัวเลือกที่พบบ่อยที่สุดสำหรับการเปลี่ยนเส้นทาง 301 ซึ่งสร้างขึ้นในไฟล์ .htaccess ในหลายตัวอย่าง จำเป็นต้องแทนที่ข้อมูลสาธิต ไม่เช่นนั้นการเปลี่ยนเส้นทางจะทำงานไม่ถูกต้อง

    301 เปลี่ยนเส้นทางจาก http ไปยัง https

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

    RewriteCond %(HTTPS) !=บน RewriteRule ^(.*)$ https://%(HTTP_HOST)/$1

    ผลลัพธ์ของการเปลี่ยนเส้นทางนี้จะเพิ่มลงใน URL ของไซต์ทั้งหมด โปรโตคอล httpส.

    301 เปลี่ยนเส้นทางจาก www ไปโดยไม่มี www

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

    เขียนใหม่ %(HTTP_HOST) ^www\.(.*)$ เขียนกฎใหม่ ^(.*)$ http://%1/$1

    ผลลัพธ์ของการเปลี่ยนเส้นทางนี้จะเป็น "การลบ" คำนำหน้า "WWW" ออกจาก URL ทั้งหมด

    301 เปลี่ยนเส้นทางจากไม่มี www ไปยัง www

    หากเลือกโดเมนที่มี WWW เป็นมิเรอร์หลัก คุณจะต้องเพิ่มคำนำหน้า “WWW” ที่เกี่ยวข้องให้กับ URL ทั้งหมด การเปลี่ยนเส้นทางด้านล่างจะช่วยคุณในเรื่องนี้

    เขียนใหม่ %(HTTP_HOST) ^([^www].*)$ เขียนกฎใหม่ ^(.*)$ http://www.%1/$1

    ผลลัพธ์ของการเปลี่ยนเส้นทางนี้จะเป็นการเพิ่มคำนำหน้า "WWW" ให้กับ URL ทั้งหมด

    301 เปลี่ยนเส้นทางจากหน้าหนึ่งไปอีกหน้าหนึ่ง

    หนึ่งในการเปลี่ยนเส้นทางที่ง่ายและธรรมดาที่สุด พอดีอยู่ในบรรทัดเดียว ช่วยให้คุณเปลี่ยน URL ของเพจอย่างถาวร กำจัดรายการที่ซ้ำกันและเนื้อหาเก่า

    เปลี่ยนเส้นทาง 301 /page-1/ http://mysite.com/new-page-1/

    ผลลัพธ์ของการดำเนินการตามคำแนะนำข้างต้นจะเป็นการเปลี่ยนเส้นทางถาวรจากหน้า /page-1/ ไปยังหน้า /new-page-1/ ในกรณีนี้ ส่วน /page-1/ จะถูกแยกออกจากการค้นหา และ /new-page-1/ จะได้รับ "น้ำหนัก" ทั้งหมดที่มีอยู่

    โปรดทราบ ในทำนองเดียวกันสามารถเปลี่ยนเส้นทางได้เฉพาะ URL ที่ไม่มีพารามิเตอร์เท่านั้น นั่นคือ สำหรับเพจ /page-1/?productID=7389 คำสั่งนี้จะไม่ทำงาน

    301 เปลี่ยนเส้นทางจากโดเมนหนึ่งไปอีกโดเมน

    ช่วยให้คุณสามารถถ่ายโอนไซต์ไปยังโดเมนอื่นได้อย่างสมบูรณ์และไม่มีเงื่อนไข

    RewriteEngine บน RewriteCond %(HTTP_HOST) domain1.ru RewriteRule (.*) http://domain2.ru/$1

    ผลลัพธ์ของการเปลี่ยนเส้นทางข้างต้นจะเป็นการเปลี่ยนเส้นทางคำขอทั้งหมดไปยัง domain1.ru ไปยัง domain2.ru

    301 เปลี่ยนเส้นทางสำหรับเครื่องหมายทับ (ลบเครื่องหมายทับที่ส่วนท้าย)

    เพื่อให้แน่ใจว่าเครื่องมือค้นหาไม่ดาวน์โหลดและวางรายการที่ซ้ำกันในการค้นหา จำเป็นต้องนำ URL ทั้งหมดมาอยู่ในรูปแบบเดียว นอกจากนี้ยังใช้กับการมีเครื่องหมายทับที่ส่วนท้ายของที่อยู่หน้าด้วย แม้ว่าโรบ็อตได้เรียนรู้ที่จะแยกรายการที่ซ้ำกันประเภทนี้ออกจากการค้นหา แต่ก็แนะนำให้ทำการเปลี่ยนเส้นทางสำหรับไซต์ที่ไม่มีเครื่องหมายทับ

    เขียนใหม่ %(REQUEST_FILENAME) !-d เขียนใหม่ %(REQUEST_URI) ^(.+)/$ กฎการเขียนใหม่ ^(.+)/$ /$1

    ผลลัพธ์จะเป็น "การลบ" เครื่องหมายทับที่ส่วนท้ายของ URL

    301 เปลี่ยนเส้นทางสำหรับเครื่องหมายทับ (เพิ่มเครื่องหมายทับที่ส่วนท้าย)

    การย้อนกลับของการเปลี่ยนเส้นทางที่กล่าวถึงก่อนหน้านี้ เพิ่มเครื่องหมายทับที่ส่วนท้ายของสตริง URL

    RewriteBase / RewriteCond %(REQUEST_FILENAME) !-f เขียนใหม่ %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*[^/])$ $1/

    ผลลัพธ์จะเป็น "การเพิ่ม" เครื่องหมายทับที่ส่วนท้ายของ URL

    301 เปลี่ยนเส้นทางจาก index.php (html)

    ในหลาย ๆ ระบบซีเอ็มเอสรวมถึงอันยอดนิยมด้วย การตั้งค่าไม่ถูกต้อง URL หน้าหลักจะสามารถเข้าถึงได้ทั้งตามชื่อโดเมนและชื่อโดเมน + index.php (html) นั่นคือไซต์และ site/index.php นำไปสู่หน้าเดียวกัน - หน้าหลัก สำหรับเครื่องมือค้นหาสิ่งเหล่านี้ซ้ำกัน ดังนั้นคุณต้องกำจัดมันทิ้ง

    ตัวอย่างที่ 1 สำหรับ index.php RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site/ ตัวอย่างที่ 2 สำหรับ index.html RewriteCond %( THE_REQUEST) ^(3,9)\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://site/

    ผลลัพธ์ของทั้งสองตัวอย่างจะเป็นการเปลี่ยนเส้นทางจาก /index.php (html) ไปยัง "รูทของไซต์" นั่นคือเพียงไปยังโดเมน

    การเปลี่ยนเส้นทาง 301 จำนวนมาก

    การเปลี่ยนเส้นทาง 301 จำนวนมากจะใช้เป็นหลักเมื่อเปลี่ยนโครงสร้างไซต์ ส่วน หรือประเภทของที่อยู่ URL ต่างจากการเปลี่ยนเส้นทางครั้งเดียวจากหน้าหนึ่งไปอีกหน้าหนึ่ง โดยจะทำตามกฎเฉพาะ ซึ่งใช้กับ URL ทั้งหมดที่ต้องเปลี่ยนเส้นทาง

    ตามค่าเริ่มต้น ระบบ CMS บางระบบจะใช้การสร้างการเปลี่ยนเส้นทาง 301 เพื่อสร้างที่อยู่ CNC เดียว

    ตัวอย่างข้างต้นส่วนใหญ่สามารถจัดเป็นการเปลี่ยนเส้นทางจำนวนมากได้ เนื่องจากกฎของพวกเขาไม่ได้นำไปใช้กับที่อยู่ URL เดียว แต่กับที่อยู่ทั้งหมดที่มีอยู่หรือกลุ่มที่เลือก

    เปลี่ยนเส้นทางจากหน้า 404 ไม่พบ

    การสร้างการเปลี่ยนเส้นทางจากหน้าที่ไม่มีอยู่ไปยังหน้าหลัก (หรืออื่นๆ) เป็นไปได้ในทางเทคนิค ไม่มีปัญหากับเรื่องนี้ อย่างไรก็ตาม จากมุมมอง SEO สิ่งนี้จะไม่ถูกต้อง เมื่อเข้าถึงส่วนที่ไม่มีอยู่ หุ่นยนต์สร้างดัชนีควรได้รับส่วนหัวที่เหมาะสม - 404 นี่เป็นวิธีเดียวที่จะสามารถสร้างดัชนีไซต์ได้อย่างถูกต้อง นอกจากนี้เครื่องมือค้นหาไม่ชอบ จำนวนมากเปลี่ยนเส้นทาง ดังนั้นควรลดการใช้งานให้เหลือน้อยที่สุด

    ตัวอย่างที่ 1 เปลี่ยนเส้นทางจากหน้า 404 ไปยังหน้าแรก

    นี่คือตัวอย่างการเปลี่ยนเส้นทางจากหน้าที่ไม่พบทั้งหมดไปยังหน้าหลัก

    ข้อผิดพลาดเอกสาร 404 http://www.site.com/301.html

    ผลลัพธ์ของการเปลี่ยนเส้นทางนี้จะเป็นการเปลี่ยนเส้นทางของคำขอทั้งหมดไปยังหน้า 404 หน้าแรกเว็บไซต์.

    ตัวอย่างที่ 2 เปลี่ยนเส้นทางจากหน้า 404 ไปยังหน้าแรกผ่านการเปลี่ยนเส้นทาง 301

    ใน ในตัวอย่างนี้อันที่จริงมีการใช้การเปลี่ยนเส้นทางสองครั้ง ดังนั้นเครื่องมือค้นหาจึงไม่ยินดีต้อนรับ อย่างไรก็ตาม หากคุณต้องการเปลี่ยนเส้นทางแบบถาวรผ่านการเปลี่ยนเส้นทาง 301 นี่คือตัวอย่าง

    ErrorDocument 404 http://www.site.com/301.html RewriteEngine บน RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule 301.html http://www.site.com/

    ตัวอย่างที่ 3 เปลี่ยนเส้นทางจากหน้า 404 ไปยังหน้าที่เตรียมไว้ก่อนหน้านี้

    การเปลี่ยนเส้นทางสามารถทำได้ไม่เพียงแต่ไปยังหน้าหลักเท่านั้น แต่ยังรวมถึงส่วนอื่นๆ ด้วย ตัวอย่างเช่นในหน้า 404 ที่เตรียมไว้ล่วงหน้าจะมีลักษณะดังนี้:

    ข้อผิดพลาดเอกสาร 404 /404.html

    กำลังตรวจสอบการเปลี่ยนเส้นทาง 301

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

    เพื่อให้แน่ใจว่าการเปลี่ยนเส้นทาง 301 ใช้งานได้จริง คุณต้องไปที่ Yandex Webmaster ในส่วน "เครื่องมือ" -> "การตรวจสอบการตอบสนองของเซิร์ฟเวอร์"

    ในช่อง "URL ที่สำรวจ" คุณต้องป้อนที่อยู่ของเพจที่คุณเปลี่ยนเส้นทาง ผลการตรวจสอบควรเป็นรหัสสถานะ HTTP “301 ถูกย้ายอย่างถาวร”

    หากเมื่อเข้าถึงเพจเก่า การเปลี่ยนเส้นทางไม่เกิดขึ้นหรือรหัสสถานะ HTTP ไม่ใช่ "301 ย้ายอย่างถาวร" ให้ตรวจสอบว่าการกำหนดค่าการเปลี่ยนเส้นทางถูกต้อง

    จะทำอย่างไรถ้าการเปลี่ยนเส้นทาง 301 ไม่ทำงาน

    เราไม่สามารถระบุสาเหตุทั้งหมดที่ทำให้การเปลี่ยนเส้นทาง 301 ไม่ทำงาน แต่เราจะเน้นสาเหตุที่พบบ่อยที่สุด ต่อไปนี้เป็นรายการปัญหาเนื่องจากการเปลี่ยนเส้นทางส่วนใหญ่ใช้งานไม่ได้:

    การเปลี่ยนเส้นทาง 301 ที่ถูกต้องคืออะไร

    การเปลี่ยนเส้นทาง 301 ที่เหมาะสมตรงตามข้อกำหนดต่อไปนี้ทั้งหมด:

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

    เปลี่ยนเส้นทางไปยังเพจที่มีรหัสตอบกลับเป็น 200 OK กล่าวคือใส่เพียงส่วนที่มีอยู่และเข้าถึงได้ เป็นที่ยอมรับไม่ได้ในการเปลี่ยนเส้นทางไปยังหน้าที่ไม่มีอยู่จริงหรือถูกจำกัด

    สร้างโดยไม่มีข้อผิดพลาดทางไวยากรณ์และตรรกะ

    การเปลี่ยนเส้นทาง 301 ถูกเลือกโดยเจตนา ตรวจสอบให้แน่ใจว่าคุณต้องใช้อันนี้ ไม่ใช่ 302 หรือ 307 การเลือกประเภทการเปลี่ยนเส้นทางมีความสำคัญมาก เนื่องจากจากมุมมองของ SEO ความแตกต่างระหว่างสิ่งเหล่านี้นั้นเกิดขึ้นทั่วโลก

    มีการตัดสินใจเลือกระหว่างแอตทริบิวต์ rel="canonical" และการเปลี่ยนเส้นทางแบบถาวร คุณไม่ควรทำการเปลี่ยนเส้นทางโดยการสุ่ม

    หากการเปลี่ยนเส้นทางของคุณเป็นไปตามข้อกำหนดข้างต้นทั้งหมด ถือว่ายอดเยี่ยมมาก

    จะลบการเปลี่ยนเส้นทาง 301 ได้อย่างไร

    หากคุณต้องการลบการเปลี่ยนเส้นทาง 301 ซึ่งไม่ทราบที่มา คุณจะต้องทำบางสิ่งให้เพียงพอ ขั้นตอนง่ายๆ- เพื่อให้เสร็จสมบูรณ์ คุณจะต้องเข้าถึง CMS ไดเรกทอรีรากของเว็บไซต์ และความรู้ผิวเผินเกี่ยวกับ php/html

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

    ตัวดำเนินการนิพจน์ทั่วไปพื้นฐาน

    ขั้นแรก มาดูตัวดำเนินการนิพจน์ทั่วไปพื้นฐาน (แฟล็ก ตัวแก้ไข อักขระพิเศษ):

    อักขระพิเศษ:

    • ^ — ขีดจำกัดด้านซ้าย (จุดเริ่มต้นของบรรทัด);
    • $ — ข้อ จำกัด ทางด้านขวา (ท้ายบรรทัด);
    • - - สัญลักษณ์ใด ๆ
    • () - ตัวแปร;
    • \ — การหลบหนี (อักขระหลัง \ ถือเป็นอักขระปกติ ไม่ใช่อักขระพิเศษ)
    • — ช่วงของค่า
    • - - ตัวละครปฏิเสธพิเศษ

    ตัวแก้ไข:

    • - — สัญลักษณ์ซ้ำ 0 หรือ 1 ครั้ง;
    • + — 1 ตัวอักษรขึ้นไป (สูงสุด 65536)
    • * - 0 ตัวอักษรขึ้นไป (สูงสุด 65536)
    วิธีการตั้งค่าการเปลี่ยนเส้นทาง 301 htaccess

    เริ่มต้นด้วยการเปลี่ยนเส้นทาง 301 ใน htaccess ประการแรก เป็นการเปลี่ยนเส้นทางอัตโนมัติจากที่อยู่หนึ่งไปยังอีกที่อยู่หนึ่ง อาจใช้ได้ดีในกรณีที่ไซต์ถูกถ่ายโอนจากโปรโตคอล http ไปยัง https เมื่อไซต์ได้รับการกำหนดค่าใหม่จากที่อยู่ "ขนาดเต็ม" ไปยัง CNC (นั่นคือ https://www.karcher.xyz/content /news/31-01 -2017/razdatka กลายเป็น https://www.karcher.xyz/ razdatka) เช่นเดียวกับหน้าซ้ำแบบ "ติดกาว" ประการที่สอง การเปลี่ยนเส้นทาง 301 บอกกับเครื่องมือค้นหาว่า “เพื่อน ที่อยู่ที่คุณมีใช้งานไม่ได้แล้ว ดังนั้นไปที่นั่นแล้ว” และพวกเขาก็ประมาณว่า “ตกลง เราจะคำนึงถึงเรื่องนั้นด้วย” ดังนั้นการเปลี่ยนเส้นทางจึงเกิดขึ้นอย่างไม่ลำบาก โดยไม่สูญเสียตำแหน่งและมวลลิงก์

    แต่จะเกิดอะไรขึ้นถ้า “โอ้ อะไรวะเนี่ย? ถ้าฉันกังวลกับการเปลี่ยนเส้นทาง ฉันจะเสียเวลา!”? คุณสามารถทำเช่นนี้ได้ แต่... ประวัติของหน้า "เก่า" จะหายไป และหน้า "ใหม่" จะถูกจัดอันดับ "ตั้งแต่เริ่มต้น" ส่งผลให้มีการสูญเสียตำแหน่งและมวลลิงก์ (อย่างดีที่สุด)

    ตัวเลือกสำหรับการใช้การเปลี่ยนเส้นทาง 301:

    • การรวมโดเมน
    • การย้ายไซต์ไปยังที่อยู่อื่น (อาจมีประโยชน์หากไซต์นั้นอยู่ภายใต้ตัวกรองใด ๆ )
    • เพื่อเพิ่ม TCI, ตัวบ่งชี้ PR และเพิ่มปริมาณการใช้งานเมื่อซื้อโดเมนอื่น (ตั้งค่าการเปลี่ยนเส้นทางไปยังทรัพยากรที่ต้องการเพิ่ม TCI และ PR)
    • เมื่อเปลี่ยนเอ็นจิ้นไซต์ (ในกรณีนี้จำเป็นต้องตั้งค่าการเปลี่ยนเส้นทาง 301 อย่างเคร่งครัดมิฉะนั้นจะรับประกันการสูญเสียการรับส่งข้อมูลโดยสมบูรณ์)
    • เมื่อย้ายจาก http เป็น https;
    • ติดกาว "ใช้เวลา"

    ฯลฯ ไม่สามารถระบุเหตุผลทั้งหมดได้

    301 เปลี่ยนเส้นทางเมื่อเปลี่ยนโดเมนของเว็บไซต์หลัก

    คุณได้ตัดสินใจเปลี่ยนโดเมนของคุณ เราจัดเตรียมโซลูชันสำเร็จรูปให้ทันที:

    • ปรับปรุง robots.txt บนโดเมนเก่า ข้อความไฟล์เสร็จแล้ว:

    ตัวแทนผู้ใช้: Yandex

    โฮสต์:newsite.com

    • ตั้งค่าการเปลี่ยนเส้นทาง 301 สำหรับทุกหน้าของไซต์ (ยกเว้นไฟล์ robots.txt) โดยใช้โค้ดด้านล่าง:

    เขียนใหม่ %(REQUEST_FILENAME) robots.txt$

    กฎการเขียนซ้ำ ^([^/]+) $1 [L]

    เขียนใหม่ %(HTTP_HOST) !^www\.site\.com

    301 เปลี่ยนเส้นทางเมื่อเปลี่ยนที่อยู่หน้า

    การเปลี่ยนเส้นทางหน้า (เมื่อที่อยู่หน้าเปลี่ยนแปลง) ดำเนินการโดยใช้รหัสด้านล่าง:

    เขียนโปรแกรมใหม่อีกครั้ง

    เขียนใหม่ %(HTTP_HOST) ^www\.stokrat\.org$

    RewriteRule ^stranica/nastrojka-301-redirekta/$ https://www.site/newpage/

    เป็นรหัสนี้ที่ใช้เมื่อ "ย้าย" เพจ เช่น บน CNC

    ตั้งค่าการเปลี่ยนเส้นทางจาก www ไปยังโดเมนโดยไม่มี www ใน htaccess

    กล่าวถึง www. ในที่อยู่โดเมนไม่เกี่ยวข้องมาเป็นเวลานาน อย่างไรก็ตาม เว็บไซต์ที่มี www. สมบูรณ์. การรวมโดเมนจาก www. และไม่ต้องทำในลักษณะบังคับอย่างเคร่งครัดเพราะว่า เสิร์ชเอ็นจิ้นมองว่า 2 โดเมนนี้เป็น 2 ไซต์ที่แตกต่างกันโดยมี TCI, PR, ปริมาณการใช้ข้อมูล, มวลลิงก์ และอื่นๆ ที่แตกต่างกัน ดังนั้นหนึ่งในนั้นคือต้นฉบับและอย่างที่สองคือ "ผู้แอบอ้าง" ที่มี "เนื้อหาที่ถูกขโมย" เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น - โดเมนที่มี www. และไม่จำเป็นต้อง "รวมเข้าด้วยกัน" โดยใช้การเปลี่ยนเส้นทาง 301 รหัสการตั้งค่าอยู่ด้านล่าง

    รหัสการเปลี่ยนเส้นทางจาก www ไปยังไม่ใช่ www ใน htaccess มีลักษณะดังนี้:

    เขียนใหม่เครื่องยนต์บน
    เขียนใหม่ %(HTTP_HOST) ^www.site.ru$

    ตอนนี้เรามาทำความเข้าใจคำสั่งกัน

    เปิด/ปิด RewriteEngine - เป็นภาษามนุษย์ธรรมดา - ทำหน้าที่เป็นสวิตช์สำหรับการเปลี่ยนเส้นทาง 301

    RewriteCond - คำสั่งนี้ระบุเงื่อนไขสำหรับ "การทริกเกอร์" ของคำสั่งถัดไป

    RewriteRule เป็นคำสั่งสำหรับการแปลงที่อยู่หนึ่งไปยังอีกที่อยู่หนึ่ง

    ตั้งค่าการเปลี่ยนเส้นทาง 301 จาก http เป็น https ผ่าน htaccess

    หลายๆ คนคงพิจารณาย้ายจาก http มาเป็น https " เทรนด์สมัยใหม่- อย่างไรก็ตาม วันนี้ มาตรการนี้ถือเป็นข้อบังคับ (แม้ว่าจะไม่ได้เป็นทางการก็ตาม) และตอนนี้ก็ถึงเวลาที่คุณได้รับใบรับรอง SSL เว็บไซต์ของคุณใช้งานได้ทั้ง http และ https แล้ว สิ่งที่เหลืออยู่ที่ต้องกำหนดค่าในไฟล์ .htaccess คือการเปลี่ยนเส้นทาง 301 จากหน้าเว็บไซต์เวอร์ชัน http ไปเป็น https รหัสการกำหนดค่าได้รับด้านล่าง

    กฎการเขียนใหม่ ^(.*)$ https://site.ru/$1

    และนี่คือโค้ดสำหรับการเปลี่ยนเส้นทางแบบย้อนกลับจาก https ไปยัง http อย่างที่คุณเห็นความแตกต่างมีเพียง 1 ตัวอักษรเท่านั้น:

    เขียนใหม่ %(SERVER_PORT) !^443$

    กฎการเขียนใหม่ ^(.*)$ http://site.ru/$1

    เปลี่ยนเส้นทางจากหน้า index.php, index.html

    โดยส่วนใหญ่เราจะพูดถึงการติดกาวที่ซ้ำกันซึ่งอาจมีจำนวนมากได้

    เนื่องจากมีการกล่าวถึง index.php และ index.html ในคำบรรยาย คุณจึงเดาได้ว่าด้วยความช่วยเหลือของการเปลี่ยนเส้นทาง 301 เราจะกำจัดรายการที่ซ้ำกันของหน้าหลัก:

    อย่างไรก็ตาม หากหน้าหลักมีรูปแบบซ้ำกับ site.ru/index.php ก็มีแนวโน้มว่าหน้าที่เหลือจะมีรูปแบบซ้ำกับ site.ru/index.php/page.html (โดยมีที่อยู่เดิมคือไซต์) .ru/page.html ) สิ่งนี้ไม่ดี ดังนั้นจึงจำเป็นต้องตั้งค่าการเปลี่ยนเส้นทาง 301 โดยใช้โค้ดด้านล่าง:

    เขียนกฎใหม่ ^index\.php/(.*)$ /$1

    ไม่ใช่เรื่องแปลกที่หน้าหลักจะมีมุมมองซ้ำกัน

    site.ru/main.html ซึ่งจำเป็นต้องลงทะเบียนการเปลี่ยนเส้นทาง 301 ไปยัง site.ru ด้วย:

    เขียนโปรแกรมใหม่อีกครั้ง

    เขียนใหม่ %(THE_REQUEST) ^(3,9)\ /main\.html\ HTTP/

    หรือทางเลือกอื่น:

    เปลี่ยนเส้นทาง 301 /main.html ไฮเปอร์ลิงก์ "http://site.ru/" http:// เว็บไซต์. รุ/

    ตอนนี้ลองพิจารณาสถานการณ์ตรงกันข้าม - เมื่อคุณต้องการรวมรายการที่ซ้ำกันโดยตั้งค่าการเปลี่ยนเส้นทางจาก site.ru ไปยัง site.ru/main.html คุณสามารถทำได้โดยใช้รหัสด้านล่าง

    เขียนใหม่ %(REQUEST_URI) (.*/[^/.]+)($|\?)

    กฎการเขียนใหม่ .* %1.html

    กฎการเขียนใหม่ ^(.*)/$ /$1.html

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

    เขียนใหม่ %(REQUEST_URI) \.html$

    เขียนกฎใหม่ ^(.*)\.html$ /$1

    ตอนนี้เกี่ยวกับวิธีการเปลี่ยนเส้นทางจากหน้าหนึ่งไปอีกหน้าหนึ่งคือ from.htm ไปยัง page.html หากต้องการตั้งค่าการเปลี่ยนเส้นทาง เพียงเพิ่มโค้ดต่อไปนี้ใน .htaccess:

    เขียนกฎใหม่ ^(.*)\.htm$ $1.html

    เปลี่ยนเส้นทางจากที่อยู่ที่มีและไม่มีเครื่องหมายทับต่อท้าย

    ขั้นแรก มาดูหน้าที่ซ้ำกันประเภทอื่น - หน้าต่างๆ เช่น http://site.xyz/page และ http://site.xyz/page/ - ยกเว้นเครื่องหมายทับที่ส่วนท้าย ซึ่งก็ไม่แตกต่างกัน คุณสามารถกำหนดค่าการเปลี่ยนเส้นทางจากครั้งแรกไปครั้งที่สอง และจากครั้งที่สองไปยังครั้งแรก ลองพิจารณาทั้งสองตัวเลือก:

    เปลี่ยนเส้นทางจาก http://site.xyz/page ไปที่ http://site.xyz/page/:

    เขียนใหม่Cond %(REQUEST_FILENAME) !-f

    เขียนใหม่ %(REQUEST_URI) !\..+$

    เขียนใหม่ %(REQUEST_URI) !/$

    กฎการเขียนใหม่ (.*) http://www.site.ru/$1/

    เปลี่ยนเส้นทางจาก http://site.xyz/page/ ไปยัง http://site.xyz/page:

    เขียนใหม่Cond %(REQUEST_FILENAME) !-d

    เขียนใหม่ %(REQUEST_URI) ^(.+)/$

    เขียนกฎใหม่ ^(.+)/$ /$1

    ยิ่งกว่านั้นไม่สำคัญเลยว่าคุณจะมีเครื่องหมายทับที่ส่วนท้ายของที่อยู่หลังจากการเปลี่ยนเส้นทางหรือไม่ สิ่งสำคัญคือที่อยู่เหล่านี้ติดกันโดยใช้การเปลี่ยนเส้นทาง 301

    เปลี่ยนเส้นทางไปที่ รุ่นมือถือเว็บไซต์

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

    อย่างไรก็ตาม Google ก็เป็นผู้สนับสนุน การออกแบบที่ปรับเปลี่ยนได้- ดังนั้นจึงไม่จำเป็นต้องจัดสรรโดเมน/โดเมนย่อยแยกต่างหากสำหรับเวอร์ชันมือถือ เหล่านั้น. Google อ้างว่า “หากเป็นไปได้โดยไม่ต้องเปลี่ยนเส้นทางไปยังเวอร์ชันมือถือ นั่นคือสิ่งที่คุณควรจะทำ”

    แต่จะทำอย่างไรถ้าคุณยังไม่สามารถทำได้หากไม่มีการเปลี่ยนเส้นทางดังกล่าว?

    คุณสามารถกำหนดค่าการเปลี่ยนเส้นทางผ่านไฟล์ .htaccess

    เขียนโปรแกรมใหม่อีกครั้ง

    เขียนใหม่ %(HTTP_ACCEPT) "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml"

    เขียนใหม่ %(REQUEST_URI) ^/$

    กฎการเขียนซ้ำ ^ http://m.domain.com%(REQUEST_URI)

    การตั้งค่าการเปลี่ยนเส้นทางมือถือผ่าน PHP

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

    $detect = Mobile_Detect ใหม่;

    ถ้า ($detect->isMobile()) (//รหัส)

    ถ้า ($detect->isTablet()) (//รหัส)

    ถ้า ($detect->isiOS()) (//รหัส)

    ถ้า ($detect->isAndroidOS()) (// รหัส)

    จากรหัสนี้ จะเห็นได้ชัดว่าไม่เพียงแต่คอมพิวเตอร์/สมาร์ทโฟน/แท็บเล็ตเท่านั้น แต่ยังรวมถึงระบบปฏิบัติการด้วย

    การเปลี่ยนเส้นทางจาวาสคริปต์

    รหัสด้านล่างเปลี่ยนเส้นทางไปยังโดเมนย่อยบนมือถือ พื้นฐานสำหรับการเปลี่ยนเส้นทางคือความละเอียดหน้าจอ - กว้างสูงสุด 480 พิกเซล เป็นความกว้างไม่ใช่ความสูง

  • ถ้า (เปิด screen.width

    วิธีที่ 2. การตั้งค่าการเปลี่ยนเส้นทางไปยัง site.com ผ่าน .htaccess โดยการใส่รหัสนี้:

    เขียนใหม่ %(QUERY_STRING) ^route=common/home$

    กฎการเขียนใหม่ ^index\.php$ http://site.com/?

    ในทำนองเดียวกัน (กล่าวคือ วิธีที่สอง) คุณสามารถตั้งค่าการเปลี่ยนเส้นทางจากที่อยู่หมวดหมู่เก่าไปยังที่อยู่ใหม่ได้ ตามค่าเริ่มต้น ที่อยู่ลิงก์ใน OpenCart จะมีลักษณะดังนี้:

    site.com/index.php?path=83_94_113&route=product/category

    การดูลิงก์ดังกล่าวเป็นเรื่องที่เจ็บปวดมาก และตามความหมายที่แท้จริงแล้ว เพราะ... ดวงตาของฉันเริ่มเจ็บมากเมื่อเห็นที่อยู่ดังกล่าว ใน .htaccess เดียวกัน คุณสามารถกำหนดค่าการเปลี่ยนเส้นทางไปยังที่อยู่ "มนุษย์" เช่น site.com/category โดยใช้โค้ดต่อไปนี้:

    เขียนใหม่ %(QUERY_STRING) ^path=83_94_113&route=product/category$

    กฎการเขียนใหม่ ^index\.php$ http://site.com/new-category?

    แต่จะทำอย่างไรกับ ที่อยู่แบบไดนามิกซึ่งเนื่องจากการเชื่อมโยงกับส่วนใดส่วนหนึ่งจึงมีลักษณะเช่นนี้ site.com/katalog?c=okna-pvkh ?

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

    เขียนใหม่ %(QUERY_STRING) ^c=okna-pvkh$

    แค็ตตาล็อก RewriteRule http://site.com/?

    หมายเหตุและข้อผิดพลาด

    ตอนนี้เรามาพูดถึงวิธีหลีกเลี่ยงข้อผิดพลาดเมื่อตั้งค่าการเปลี่ยนเส้นทาง 301:

    • ลำดับกฎการส่งต่อจะต้องไม่ถูกละเมิด หลังจากตั้งค่าการเปลี่ยนเส้นทาง คุณต้องแน่ใจว่าการตั้งค่าไม่ทำให้เกิด “ ผลข้างเคียง- หากคุณละเมิดลำดับของกฎ การเปลี่ยนเส้นทางที่กำหนดค่าไว้ก่อนหน้านี้อาจหยุดทำงานหรือทำงานไม่ถูกต้อง ไม่ควรมีข้อขัดแย้งในกฎเกณฑ์
    • คุณสามารถใช้คู่มืออย่างเป็นทางการได้เพราะ... การเปลี่ยนเส้นทาง 301 มีคุณสมบัติมากมายเนื่องจากมีไวยากรณ์ที่ซับซ้อน เป็นเรื่องง่ายที่จะพลาดความแตกต่างเล็กๆ น้อยๆ เมื่อตั้งค่า
    • หลังจาก "เสร็จสิ้น" ครั้งถัดไป จะต้องตรวจสอบการทำงานของกฎที่นำมาใช้ก่อนหน้านี้อย่างครบถ้วนเสมอ การตั้งค่าโดยไม่ตรวจสอบไม่ใช่การตั้งค่าแม้แต่ "สำหรับการแสดง" อักขระพิเศษหนึ่งตัวอาจทำให้ทั้งไซต์เสียหายหรือทำให้ทำงานไม่ถูกต้อง ตามโปรแกรมเมอร์คนอื่นๆ เราต้องแก้ไขการทำงานของไซต์มากกว่าหนึ่งครั้ง เมื่อมีการเปลี่ยนเส้นทาง 301 จากที่อยู่ site.com/oldpage ไปยัง site.com/newpage จากนั้นเมื่อใช้การเปลี่ยนเส้นทาง 301 เดียวกัน การเปลี่ยนเส้นทางก็เกิดขึ้น กลับไปที่ site.com/oldpage และต่อไป " เป็นวงกลม"

    โดยสรุป เราจะยกตัวอย่างบางส่วนเมื่อคุณไม่สามารถใช้การเปลี่ยนเส้นทาง 301 ได้เลย

    ประการแรก "มัลติพาส" เมื่อมีการเปลี่ยนเส้นทาง 301 หลายชุดติดต่อกัน การตั้งค่าการเปลี่ยนเส้นทางโดยตรงไปยังที่อยู่ "สิ้นสุด" จะถูกต้องมากกว่ามาก

    ประการที่สองหากมี 2 หน้าที่มีเนื้อหาซ้ำกันด้วยเหตุผลบางประการ แต่คุณต้องบันทึกทั้งสองหน้าสำหรับผู้ใช้

    ประการที่สาม เปลี่ยนเส้นทาง "ไปยังที่ที่ไม่ถูกต้อง" เหล่านั้น. หากเพจได้ย้ายจากที่อยู่แรกไปยังที่อยู่ที่สองและเมื่อตั้งค่าการเปลี่ยนเส้นทางคุณระบุที่อยู่ของเพจอื่นโดยไม่ได้ตั้งใจ

    ประการที่สี่ เปลี่ยนเส้นทางไปยังหน้าที่ทำงานไม่ถูกต้องมากด้วยเหตุผลบางประการ หน้าเว็บควรทำงานได้อย่างเสถียรและส่งกลับรหัส 200 หรือรหัส 404

    ประการที่ห้า เปลี่ยนเส้นทางไฟล์ robots.txt สิ่งนี้เป็นสิ่งต้องห้ามตามกฎของเครื่องมือค้นหาจำนวนมาก ยิ่งไปกว่านั้น หลายคนทำผิดพลาดแบบเดียวกัน - เมื่อพวกเขากำหนดค่าการเปลี่ยนเส้นทาง htaccess ไปที่ https จาก http://site.xyz/robots.txt ไปยัง https://site.xyz/robots.txt ไฟล์ robots.txt ต้องสามารถเข้าถึงได้จากทั้งสองที่อยู่โดยไม่มีการเปลี่ยนเส้นทาง เช่นเดียวกับแผนผังไซต์ xml

    ใครๆก็ส่งได้.. แต่การเปลี่ยนเส้นทางอย่างถูกต้องถือเป็นศิลปะทั้งหมด แต่การเปลี่ยนเส้นทางผู้ใช้ไปนั้นยากยิ่งกว่า เส้นทางที่ถูกต้องบนอินเทอร์เน็ต การเปลี่ยนเส้นทางไปยัง php เหมาะที่สุดสำหรับสิ่งนี้

    การเปลี่ยนเส้นทางประเภทใด?

    ในการเขียนโปรแกรมเว็บ สถานการณ์เกิดขึ้นเมื่อคุณต้องการเปลี่ยนเส้นทางผู้ใช้ตามลิงก์ไปยังที่อยู่อื่น แน่นอนว่าเมื่อมองแวบแรก การใช้การเปลี่ยนเส้นทางดังกล่าวอาจดู “ผิดกฎหมาย” เล็กน้อย ในทางปฏิบัติ การเปลี่ยนเส้นทางดังกล่าวเป็นที่ต้องการไม่เพียงแต่ในหมู่ผู้โจมตีเท่านั้น แต่ยังเป็นที่ต้องการของผู้ดูแลเว็บที่ซื่อสัตย์ด้วย:

    ในกรณีใดบ้างที่อาจจำเป็นต้องมีการเปลี่ยนเส้นทาง:

    • เมื่อกลไกของไซต์ถูกแทนที่ สถาปัตยกรรมของทรัพยากรทั้งหมดจะเปลี่ยนแปลงตามไปด้วย ปัญหาก็เกิดขึ้นจากการเปลี่ยนเส้นทาง
    • เมื่อโครงสร้างของทรัพยากรถูกวาดใหม่ ทั้งส่วนหรือวัสดุหนึ่งรายการจะถูกเพิ่ม ลบ หรือถ่ายโอน ขณะที่กระบวนการนี้เกิดขึ้น คุณสามารถเปลี่ยนเส้นทางผู้ใช้ไปยังส่วนที่ต้องการได้ชั่วคราว
    • หากเว็บไซต์เพิ่งเปลี่ยนชื่อโดเมน หลังจากเปลี่ยนชื่อโดเมน ชื่อโดเมนเก่าจะยังคงปรากฏในผลการค้นหาเป็นระยะเวลาหนึ่ง ในกรณีนี้ เครื่องมือค้นหาจะเปลี่ยนเส้นทางผู้ใช้ไปยังโดเมนใหม่โดยอัตโนมัติ
    • ในระหว่างขั้นตอนการอนุญาตตามกฎแล้วจะมีผู้ใช้สองกลุ่มบนเว็บไซต์ขนาดใหญ่: ผู้เยี่ยมชมทั่วไปและผู้ดูแลระบบทรัพยากร ในกรณีนี้ ควรใช้การเปลี่ยนเส้นทางสำหรับผู้ใช้แต่ละรายตามสิทธิ์และบทบาทของเขา หลังจากการอนุญาต ผู้ดูแลไซต์หรือผู้ดูแลไปที่ส่วนผู้ดูแลระบบของทรัพยากร และผู้เยี่ยมชมไปที่ส่วนผู้ใช้ของทรัพยากร
    คุณสมบัติของการเปลี่ยนเส้นทางไปยัง php.ini

    ไม่เหมือนคนอื่น ภาษา PHPมีข้อดีบางประการในการใช้การเปลี่ยนเส้นทาง:

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

    หากต้องการเปลี่ยนเส้นทางใน PHP จะใช้ฟังก์ชัน header() ใช้สำหรับส่งส่วนหัว http ไวยากรณ์ของมันคือ:

    ส่วนหัวเป็นโมฆะ (สตริง $string [, bool $replace = true [, int $http_response_code ]])

    อาร์กิวเมนต์ที่ยอมรับโดยฟังก์ชัน:


    • สตริง $string – สตริงส่วนหัว;

    อาร์กิวเมนต์นี้มีสองประเภท อันแรกใช้สำหรับส่งรหัสสถานะการเชื่อมต่อ ขึ้นต้นด้วย "HTTP/" อีกประเภทหนึ่งจะส่งรหัสสถานะ (REDIRECT 302) ไปยังเบราว์เซอร์ไคลเอ็นต์พร้อมกับส่วนหัว อาร์กิวเมนต์นี้เริ่มต้นด้วย "ตำแหน่ง:"


    • bool $replace เป็นแอ็ตทริบิวต์ทางเลือกประเภท bool รับผิดชอบในการเอาชนะส่วนหัวก่อนหน้า หากตั้งค่าเป็น true ส่วนหัวก่อนหน้าหรือส่วนหัวที่เป็นประเภทเดียวกันจะถูกแทนที่ หากอาร์กิวเมนต์ถูกตั้งค่าเป็น false ส่วนหัวจะไม่ถูกเขียนใหม่ ตามค่าเริ่มต้น ค่านี้จะถูกตั้งค่าเป็น true ;
    • http_response_code - อาร์กิวเมนต์บังคับให้ใช้รหัสตอบกลับ HTTP การติดตั้งโค้ดจะสำเร็จหากอาร์กิวเมนต์สตริงไม่ว่างเปล่า

    รหัสสถานะ HTTP เป็นส่วนหนึ่ง บรรทัดบนสุดการตอบสนองของเซิร์ฟเวอร์ รหัสประกอบด้วยตัวเลขสามตัว ตามด้วยข้อความอธิบายเป็นภาษาอังกฤษ ตัวเลขตัวแรกรับผิดชอบคลาสสถานะ การเปลี่ยนเส้นทางสอดคล้องกับรหัสตั้งแต่ 300 ถึง 307 คำอธิบายแบบเต็มสามารถพบได้ในเอกสารทางเทคนิคที่เกี่ยวข้อง

    เมื่อใช้ฟังก์ชัน header() สำหรับการเปลี่ยนเส้นทาง ลิงค์ภายนอกตำแหน่งของการโทรมีความสำคัญอย่างยิ่ง ในโค้ดควรอยู่เหนือแท็ก html ทั้งหมด:


    การใช้การเปลี่ยนเส้นทาง header()

    เพื่อสาธิตการทำงานของฟังก์ชันบนเซิร์ฟเวอร์ภายในเครื่อง คุณต้องสร้างไฟล์สองไฟล์ ลองเรียกหนึ่งในนั้นว่า เปลี่ยนเส้นทาง.php และอีกอัน เปลี่ยนเส้นทาง2.php ภายในอันแรกเราจะทำการเรียกใช้ฟังก์ชันในรูปแบบต่อไปนี้:

    ในไฟล์อื่นเราใส่บรรทัด:

    echo "สวัสดี! คุณอยู่ในไฟล์ เปลี่ยนเส้นทาง2.php";


    ตัวอย่างที่เป็นประโยชน์เพิ่มเติมของการใช้การเปลี่ยนเส้นทางไปยัง php:

    • บังคับให้ส่งรหัส สถานะ http– เมื่อใช้อาร์กิวเมนต์แรกของฟังก์ชัน header() ประเภท “location” โดยค่าเริ่มต้น รหัสสถานะ “302” (ย้ายชั่วคราว) จะถูกส่งไปที่ส่วนหัว นี่อาจกลายเป็นปัญหาได้เมื่อย้ายทรัพยากรไปยังชื่อโดเมนอื่น ในเครื่องมือค้นหา การเปลี่ยนเส้นทางชั่วคราวดังกล่าวอาจใช้เวลานานกว่านั้น ท้ายที่สุดแล้วเครื่องมือค้นหาจะวิเคราะห์รหัสสถานะอย่างต่อเนื่อง และมีข้อความว่า "ย้ายชั่วคราว" ตัวอย่างการบังคับให้เขียนรหัสสถานะ "302" เป็น "301" ใหม่ (ย้ายอย่างถาวร):

    การเขียนใหม่ยังสามารถทำได้ในสองขั้นตอน บรรทัดแรกเขียนรหัสสถานะใหม่ และบรรทัดที่สองเปลี่ยนเส้นทางไปยังที่อยู่ใหม่:

    • การใช้การเปลี่ยนเส้นทางของลิงก์ภายนอกเพื่อเปลี่ยนเส้นทางขึ้นอยู่กับบทบาทของผู้ใช้ บทบาทจะถูกกำหนดในระหว่างขั้นตอนการรับรองความถูกต้อง ค่าที่จะประมวลผลจะถูกเขียนไปยังตัวแปร $who:

    • ตัวย่อ ตัวอย่างการปฏิบัติการใช้การเปลี่ยนเส้นทางลิงก์ภายนอก - การคลิกที่ลิงก์จะนำไปสู่หน้า PHP จากที่นี่ ผู้ใช้จะถูกโอนไปยัง Rambler ภายใน 5 วินาที รหัส HTML:

    กดฉันสิ

    รหัสไฟล์ Redirect3.php:


    ตอนนี้เรามาถึงการเรียนรู้พื้นฐานของการเปลี่ยนเส้นทางใน PHP ตอนนี้คุณสามารถทำหน้าที่เปลี่ยนเส้นทางผู้ใช้ไปในทิศทางที่ถูกต้องได้อย่างปลอดภัย สิ่งสำคัญคืออย่าทำผิดพลาดในทิศทางมิฉะนั้นคุณจะนำผู้ใช้ทั้งหมดของคุณไปยังไซต์ของคนอื่น...

    คุณต้องเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าอื่นบ่อยแค่ไหน? ฉันแน่ใจว่ามันไม่ใช่เรื่องแปลก มีการใช้วิธีการหลายวิธีเพื่อให้งานนี้สำเร็จ

    กำลังเปลี่ยนเส้นทางไปยังจาวาสคริปต์

    บนเพจที่คุณต้องการเปลี่ยนเส้นทางผู้ใช้ ให้ตั้งรหัสต่อไปนี้:

    window.location.href = "http://www.site"

    แทนที่จะเป็น http://www.site ให้ระบุหน้าที่ผู้ใช้ควรถูกเปลี่ยนเส้นทางไป วิธีการนี้ใช้ไม่ได้หากไม่ได้เปิดใช้งานจาวาสคริปต์ในเบราว์เซอร์ แต่ตามการปฏิบัติแสดงให้เห็น ผู้ใช้ไซต์เกือบทั้งหมดเปิดใช้งานจาวาสคริปต์ แต่ในขณะเดียวกันก็ปิดการใช้งานสำหรับบอทการค้นหา

    การเปลี่ยนเส้นทางโดยใช้เมตาแท็กการรีเฟรช

    มาใช้ประโยชน์กันเถอะ แท็ก html- แท็กที่ระบุเวลารีเฟรชหน้าจะมีลักษณะดังนี้:

    แท็กในแบบฟอร์มนี้จะบังคับให้รีเฟรชเพจในเบราว์เซอร์หลังจากผ่านไป 5 วินาที โดยแทนที่ที่อยู่เพจด้วยที่อยู่ใหม่ที่ระบุไว้ในแท็ก
    แต่เราไม่พอใจเวลา 5 วินาที ดังนั้นเวอร์ชันสุดท้ายของแท็กจะเป็นดังนี้:

    < meta http-equiv = "refresh" content = "0;url=http://www.сайт" />

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

    การเปลี่ยนเส้นทางเครื่องมือ PHP

    ทุกอย่างเรียบง่ายที่นี่ คุณต้องส่งส่วนหัว http ที่เหมาะสม

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

    ดังนั้นอย่าลืมระบุส่วนหัว http ที่จำเป็นเมื่อถ่ายโอนวัสดุ

    ส่งต่อโดยวิธี เซิร์ฟเวอร์อาปาเช่(.htaccess)

    บางทีวิธีการส่งต่อที่สะดวกที่สุด ตัวอย่างการเปลี่ยนเส้นทางไปยังโดเมนใหม่:

    ดังนั้นเราจึงเปลี่ยนเส้นทางคำขอจากไฟล์ old.htm ที่อยู่ในไดเร็กทอรีรากของไซต์ ไปยังไฟล์ rewrite.html ที่อยู่ในไดเร็กทอรี newcategory

    ดังที่คุณสังเกตเห็นแล้ว (และผู้ที่ไม่มีเวลายังคงมีโอกาสสุดท้าย) RewriteRule รองรับ การแสดงออกปกติซึ่งช่วยให้คุณทำทุกอย่างที่คุณต้องการด้วยการเปลี่ยนเส้นทาง
    ตัวอย่างเช่น ฉันสร้างไฟล์ .htm พร้อมรูปภาพ (RewriteRule ^(.*).htm$ $1.jpg) เช่น จากที่อยู่ dog.htm เบราว์เซอร์เปลี่ยนเส้นทางฉันไปยังรูปภาพ dog.jpg ฉันไม่ต้องการอธิบายความสามารถทั้งหมดของโมดูล mod_rewrite ซึ่งตอนนี้เรากำลังดำเนินการด้วยความช่วยเหลือ มีการเขียนบทช่วยสอนมากมายเกี่ยวกับเรื่องนี้ แต่ถ้าคุณต้องการ คุณสามารถดูได้ด้วยตัวเอง ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ (ตัวอย่างเช่นในภาษาอังกฤษ)

    ข้อดีของวิธีนี้คือไม่เจ็บปวด นั่นคือการถ่ายโอนวัสดุและการเปลี่ยนเส้นทางจากที่อยู่เก่าไปยังที่อยู่ใหม่ในภายหลังจะไม่ส่งผลกระทบต่อตำแหน่งของเว็บไซต์ในทางใดทางหนึ่ง เครื่องมือค้นหา- ระบบทำงานเหมือนกับการเปลี่ยนเส้นทาง php ยกเว้นว่าไม่จำเป็นต้องติดตั้ง php แต่ก็มีข้อเสียเช่นกัน: การเปลี่ยนเส้นทางผ่าน mod-rewrite จะโหลดเซิร์ฟเวอร์มากกว่าการเปลี่ยนเส้นทางเดียวกันผ่าน php เล็กน้อย และโมดูล mod-rewrite ไม่ได้ติดตั้งบน Apache เสมอไป แม้ว่าผู้ให้บริการโฮสต์ส่วนใหญ่จะติดตั้งโมดูลนี้แล้ว แต่ก็ยังมีกรณีทางคลินิกบางกรณีที่ไม่ได้ติดตั้งโมดูลนี้

    เลือกวิธีการที่เหมาะกับคุณที่สุดและติดตั้งบนเว็บไซต์ของคุณ!