ตัวสร้าง Redirect สำหรับ Htaccess

ทุกครั้งที่คุณย้ายบล็อก เปลี่ยนรูปแบบ URL หรือรวมหน้าเก่าเข้าด้วยกัน .htaccess ของ Apache จะรับภาระหลักในการจัดการ ตัวสร้างนี้เปลี่ยนการจับคู่แบบง่าย source → target ให้เป็น directive RewriteRule ที่ถูกต้องพร้อม flag ที่เหมาะสม พร้อมวางลงในไฟล์ .htaccess ของเว็บไซต์

วิธีสร้างกฎ redirect

  1. 1

    เลือกชนิด redirect

    301 ถาวรสำหรับการย้ายที่ปลอดภัยต่อ SEO, 302 ชั่วคราวสำหรับการทดสอบ A/B และ redirect ตามฤดูกาล

  2. 2

    ป้อน source และ target

    path ที่แม่นยำหรือ pattern แบบ regex: path เก่าจะกลายเป็น pattern ของ RewriteRule และ URL ใหม่เป็นปลายทางของ redirect

  3. 3

    ตรวจสอบ flag

    แต่ละกฎจะได้รับ flag ที่ถูกต้องโดยอัตโนมัติคือ `[R=301,L]` หรือ `[R=302,L]` จึงใช้งานกับ mod_rewrite ได้ทันที

  4. 4

    คัดลอก directive

    บล็อกที่สร้างขึ้นจะอยู่ภายในส่วน `<IfModule mod_rewrite.c>` ของ .htaccess

directive ของ mod_rewrite เทียบกับ mod_alias

Apache มีสองโมดูลสำหรับ redirect เลือกตามความซับซ้อนของกฎ

คู่มือการตัดสินใจ

ข้อกำหนด ใช้ ตัวอย่าง
URL เก่าที่แม่นยำ → URL ใหม่ที่แม่นยำ Redirect Redirect 301 /old /new
คำนำหน้าแบบ wildcard RedirectMatch RedirectMatch 301 ^/blog/(.*)$ /articles/$1
จับคู่ query-string RewriteRule ดูด้านล่าง
บังคับ HTTPS RewriteRule RewriteCond %{HTTPS} off + กฎ
มีเงื่อนไข (เบราว์เซอร์, cookie) RewriteRule พร้อม RewriteCond

ตัวอย่าง: บังคับ HTTPS พร้อม www

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

ตัวอย่าง: ย้าย /blog/post-123 ไปยัง /articles/post-123

RewriteEngine On
RewriteRule ^blog/(.*)$ /articles/$1 [L,R=301]

flag ที่คุณจะพบ

  • L, คำสั่งสุดท้าย หยุดการประมวลผลกฎต่อไป
  • R=301 หรือ R=302, redirect ด้วยรหัสสถานะนั้น
  • NC, ไม่สนใจตัวพิมพ์เล็กใหญ่
  • QSA, ผนวก query string เดิมเข้ากับ URL ใหม่
  • NE, ไม่เข้ารหัสอักขระพิเศษใน target ซ้ำ

ข้อผิดพลาดที่พบบ่อย

  • ลืม RewriteEngine On, หากไม่มี RewriteRule จะไม่มีผลใดๆ
  • ใช้ 302 เป็นค่าเริ่มต้น, Google ถือว่าเป็นแบบชั่วคราว ดังนั้น URL เก่าจึงยังคงติดอันดับอยู่
  • redirect แบบต่อกัน (เก่า → กลาง → สุดท้าย), ตั้งเป้าให้กระโดดครั้งเดียวเสมอ การกระโดดเพิ่มแต่ละครั้งสูญเสีย link equity และเพิ่ม latency

คำถามที่พบบ่อย

ใช้ 301 สำหรับการย้ายถาวร: การย้ายเว็บไซต์ การเปลี่ยน slug URL การอัปเกรด HTTPS ใช้ 302 เฉพาะสถานการณ์ชั่วคราว เช่น การกำหนดเส้นทางไปหน้าบำรุงรักษาหรือการแบ่ง A/B เครื่องมือค้นหาถ่ายโอนสัญญาณการจัดอันดับบน 301 ไม่ได้ถ่ายโอนอย่างน่าเชื่อถือบน 302

สาเหตุที่พบบ่อยที่สุดคือการลืม slash นำหน้าใน pattern ใน RewriteRule นั้น pattern จับคู่ path โดยไม่มี slash นำหน้า (เช่น ^blog/) ใน Redirect (mod_alias) นั้น pattern เริ่มต้นด้วย slash (/blog) อย่าปนสองธรรมเนียมนี้

ได้, ใช้ RewriteCond %{QUERY_STRING} ^id=123$ ก่อน RewriteRule Redirect ธรรมดาไม่อ่าน query string มีเพียง RewriteRule เท่านั้นที่จับคู่ได้

ใช่ ในคำขอถัดไป, Apache อ่าน .htaccess ใหม่ในทุกคำขอ ไม่ต้องรีสตาร์ทเซิร์ฟเวอร์ หากไม่มีอะไรเกิดขึ้น ให้ตรวจสอบว่าตั้ง AllowOverride All ใน vhost สำหรับไดเรกทอรีนั้นแล้ว

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

เครื่องมือสร้าง EditorConfig

สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือนี้มีให้บริการในภาษาอื่น