ตั้งค่า Permalink WordPress ให้ดี SEO ที่สุด

เลือก URL Structure ที่ถูกต้อง แก้ปัญหา 404 และทำให้ Google จัดอันดับเว็บได้ดีขึ้น

ตั้งค่า Permalink WordPress ให้ดี SEO ที่สุด WordPress

Permalink คืออะไร และทำไมสำคัญกับ SEO?

Permalink (Permanent Link) คือ URL ถาวรของแต่ละหน้าหรือบทความใน WordPress เช่น https://example.com/wordpress-tutorial/ แทนที่จะเป็น https://example.com/?p=123 ซึ่งไม่บอกอะไรเลยทั้งต่อผู้ใช้และ Google

URL ที่ดีช่วยให้ Search Engine เข้าใจเนื้อหาของหน้านั้นทันทีโดยไม่ต้องอ่านเนื้อหา ผู้ใช้คลิกได้อย่างมั่นใจมากขึ้น และเป็นปัจจัย On-page SEO ที่ Google ให้ความสำคัญมาตลอด

โดยค่าเริ่มต้น WordPress จะตั้ง Permalink เป็น ?p=123 ซึ่งเลวร้ายมากสำหรับ SEO ขั้นตอนแรกหลังติดตั้ง WordPress คือต้องเปลี่ยน Permalink Structure ให้เหมาะสมเสมอ

เปรียบเทียบรูปแบบ Permalink ใน WordPress

WordPress มี Permalink Structure ให้เลือกหลายแบบ แต่ละแบบมีข้อดีข้อเสียต่างกัน:

แนะนำ: สำหรับเว็บส่วนใหญ่ให้เลือก Post name (/%postname%/) เพราะสั้น มี Keyword จาก Slug และไม่มีวันที่ที่ทำให้ดูเก่า

วิธีตั้งค่า Permalink ผ่าน WordPress Admin

  1. เข้าสู่ระบบ WordPress Admin ที่ yoursite.com/wp-admin
  2. ไปที่เมนู Settings → Permalinks
  3. เลือก Post name หรือ Custom Structure ตามต้องการ
  4. หากเลือก Custom ให้พิมพ์ /%postname%/ ในช่อง Custom Structure
  5. คลิก Save Changes

WordPress จะเขียนกฎ Rewrite ลงใน .htaccess โดยอัตโนมัติ (บน Shared Hosting ที่ใช้ Apache) ทำให้ URL สวยงามทำงานได้ทันที

ตั้งค่า Slug บทความให้ดี SEO

นอกจาก Structure แล้ว Slug ของแต่ละบทความก็สำคัญไม่แพ้กัน Slug คือส่วน URL ที่ระบุบทความนั้น เช่น wordpress-permalink-seo ใน URL /wordpress-permalink-seo/

หลักการตั้ง Slug ที่ดี:

ตัวอย่าง Slug ที่ดี: wordpress-speed-optimization, ssl-certificate-install, cpanel-email-setup

ตัวอย่าง Slug ที่ควรหลีกเลี่ยง: how-to-install-and-setup-ssl-certificate-on-your-website (ยาวเกิน), post-12345 (ไม่มี Keyword)

ผลกระทบเมื่อเปลี่ยน Permalink บนเว็บที่มีอยู่แล้ว

หากเว็บมีผู้เยี่ยมชมและถูก Google Index แล้ว การเปลี่ยน Permalink Structure จะทำให้ URL เก่าทั้งหมดกลายเป็น 404 ทันที นี่คือสิ่งที่ต้องทำก่อนและหลังการเปลี่ยน:

  1. ก่อนเปลี่ยน: Export รายการ URL เก่าทั้งหมดจาก Google Search Console หรือ Sitemap
  2. ตั้ง Redirect 301: เพิ่ม Redirect จาก URL เก่าไปยัง URL ใหม่ทุกหน้า
  3. อัพเดท Sitemap: สร้าง Sitemap ใหม่และ Submit ใน Google Search Console
  4. Request Indexing: ใช้ URL Inspection Tool ใน Search Console ขอให้ Google Crawl URL ใหม่
สำคัญ: สำหรับเว็บใหม่ที่ยังไม่มีข้อมูลใน Google ให้เปลี่ยน Permalink ก่อนเผยแพร่เนื้อหาเลย จะไม่มีปัญหาเรื่อง URL เก่า

ตั้งค่า .htaccess สำหรับ Permalink บน Shared Hosting

บน Shared Hosting ที่ใช้ Apache, WordPress จะเขียน .htaccess อัตโนมัติเมื่อ Save Permalink Settings แต่หากระบบไม่มีสิทธิ์เขียนไฟล์ คุณต้องเพิ่มโค้ดนี้ด้วยตนเองผ่าน cPanel → File Manager:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

โค้ดนี้จะบอก Apache ว่า URL ที่ไม่ตรงกับไฟล์หรือโฟลเดอร์จริงให้ส่งต่อไปให้ WordPress จัดการ ซึ่งเป็นหลักการทำงานของ Pretty Permalink

การเพิ่ม Redirect 301 หลังเปลี่ยน Permalink

หากจำเป็นต้องเปลี่ยน Permalink บนเว็บที่ทำงานอยู่แล้ว ให้เพิ่ม Redirect 301 ใน .htaccess ก่อน # BEGIN WordPress:

# Redirect เก่า → ใหม่ (ตัวอย่าง)
Redirect 301 /2024/05/wordpress-tips/ /wordpress-tips/
Redirect 301 /2024/06/cpanel-guide/ /cpanel-guide/
Redirect 301 /?p=123 /wordpress-permalink-seo/

# หรือใช้ RedirectMatch สำหรับ Pattern เดียวกันหลาย URL
RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.+)/$ /$4/
Tip: Plugin Redirection (Free บน WordPress.org) ช่วยจัดการ 301 Redirect ได้ง่ายกว่าการแก้ .htaccess ด้วยตนเอง และมี Log ให้ตรวจสอบด้วย

ตรวจสอบว่า Permalink ทำงานถูกต้อง

หลังตั้งค่า Permalink เสร็จแล้ว ให้ตรวจสอบด้วยขั้นตอนนี้:

# 1. ทดสอบว่า .htaccess ถูก Apache อ่านหรือไม่ (ผ่าน SSH หรือดูจาก Error Log ใน cPanel)
# เปิด Error Log ใน cPanel → Logs → Error Log

# 2. ทดสอบ URL ด้วย curl (ถ้ามี SSH)
curl -I https://yoursite.com/sample-post/
# ควรได้ HTTP/2 200 ไม่ใช่ 404

# 3. ทดสอบ Redirect เก่า
curl -I https://yoursite.com/?p=1
# ควรได้ 301 Moved Permanently และ Location: ชี้ไป URL ใหม่

# 4. ตรวจสอบ mod_rewrite เปิดอยู่หรือไม่
# สร้างไฟล์ phpinfo.php ใน cPanel → File Manager
# เปิด yoursite.com/phpinfo.php แล้วค้นหาคำว่า "mod_rewrite"

# 5. ตรวจสอบ Sitemap ส่ง URL ใหม่หรือยัง
curl https://yoursite.com/sitemap.xml | grep -o '<loc>[^<]*</loc>' | head -10
Tip: หลัง Save Permalink Settings ทุกครั้งให้เปิด Browser แบบ Incognito แล้วลอง Visit บทความหนึ่งในเว็บ ถ้า URL แสดงเป็น Slug สวยงามและไม่ได้รับ 404 แปลว่าทำงานปกติแล้ว

แก้ปัญหาที่พบบ่อย

Error: หน้าบทความแสดง 404 ทุกหน้า หลังตั้ง Permalink

สาเหตุหลักคือ mod_rewrite ปิดอยู่หรือ WordPress ไม่มีสิทธิ์เขียน .htaccess วิธีแก้:

Error: หน้าแรกปกติ แต่หน้า 2 ของ Blog (/page/2/) แสดง 404

ปัญหานี้มักเกิดเพราะ WordPress มีหน้า Static Front Page และ Blog Page ตั้งไม่ถูก วิธีแก้:

Error: เปลี่ยน Slug บทความแล้ว Google ยังแสดง URL เก่า

Google Cache อาจยังเก็บ URL เก่าอยู่ได้นานถึง 30-90 วัน วิธีเร่งให้เร็วขึ้น:

Error: URL มีภาษาไทยและถูก Encode เป็น %XX%XX ยาวมาก

WordPress บางเวอร์ชันหรือ Plugin บางตัวอาจใส่ภาษาไทยใน Slug ให้อัตโนมัติเมื่อบันทึกบทความ วิธีแก้:

Error: Redirect Loop (ERR_TOO_MANY_REDIRECTS)

มักเกิดเมื่อ WordPress อยู่หลัง Reverse Proxy หรือ Cloudflare แบบ Flexible SSL วิธีแก้:

// แก้ปัญหา Redirect Loop บนเว็บที่ใช้ Cloudflare Flexible SSL
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
    $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

// หรือตั้ง WordPress URL โดยตรง
define('WP_HOME', 'https://yoursite.com');
define('WP_SITEURL', 'https://yoursite.com');

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

Q: ต้องเปลี่ยน Permalink บ่อยแค่ไหน?

A: ควรตั้งค่า Permalink Structure ให้ถูกต้องตั้งแต่แรก แล้วไม่เปลี่ยนอีก เพราะการเปลี่ยน Structure ทีหลังจะทำให้ URL ทั้งหมดเปลี่ยนและต้องทำ Redirect 301 ทุกหน้า ซึ่งยุ่งยากมาก ส่วน Slug ของแต่ละบทความก็ควรตั้งให้ดีตั้งแต่ก่อน Publish และไม่เปลี่ยนหลังจาก Google Index แล้ว

Q: ควรใส่ Category ใน Permalink หรือไม่ เช่น /%category%/%postname%/?

A: ขึ้นอยู่กับประเภทเว็บ เว็บ E-commerce หรือเว็บที่มีโครงสร้างหมวดหมู่ชัดเจนอาจใช้ /%category%/%postname%/ ได้ดี แต่สำหรับ Blog ทั่วไปแนะนำให้ใช้ /%postname%/ เพราะสั้นกว่า และถ้าต้องย้ายบทความข้ามหมวดหมู่ในอนาคต URL จะไม่เปลี่ยน

Q: Shared Hosting รองรับ Pretty Permalink ได้ไหม?

A: รองรับ แทบทุก Shared Hosting ในปัจจุบันใช้ Apache พร้อม mod_rewrite เปิดอยู่แล้ว WordPress จะเขียน .htaccess ให้อัตโนมัติเมื่อ Save Permalink Settings หากมีปัญหาให้ติดต่อ Hosting Support เพื่อขอให้ตรวจสอบว่า mod_rewrite เปิดอยู่ และ Directory มี AllowOverride All