รู้จักไฟล์ wp-config และ htaccess (สำคัญมาก)

รู้จักไฟล์ wp-config.php และ .htaccess (สำคัญมาก)

สำหรับคนทำเว็บไซต์ WordPress มือใหม่ เราอาจจะคุ้นเคยกับการจัดการเว็บผ่านหน้า Dashboard ที่มีเมนูสวยงาม แต่สำหรับ Webmaster ระดับมืออาชีพ หรือคนที่ต้องการปรับแต่งเว็บที่การตั้งค่ามาตรฐานไม่สามารถทำได้ การทำความรู้จักกับไฟล์ระดับ Core System อย่าง wp-config.php และ .htaccess คือไฟลท์บังคับที่หลีกเลี่ยงไม่ได้

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

wp-config.php ศูนย์บัญชาการหลักที่มากกว่าแค่ต่อฐานข้อมูล

หลายคนเข้าใจว่าไฟล์ wp-config.php มีหน้าที่แค่เก็บชื่อ Database และ Password ตอนติดตั้งเว็บครั้งแรก แต่ในความเป็นจริง ไฟล์นี้คือไฟล์ Configuration ระดับ Global ที่ควบคุมพฤติกรรมของ WordPress ได้ทั้งระบบครับ

ไฟล์นี้ไม่ได้มาพร้อมกับตัวติดตั้ง WordPress ตั้งแต่แรก แต่เกิดจากการเปลี่ยนชื่อไฟล์ wp-config-sample.php ระหว่างขั้นตอนการติดตั้ง ซึ่งภายในไฟล์นี้ เราสามารถ “Inject” คำสั่งพิเศษ (Constants) ลงไปเพื่อปรับแต่งระบบได้มากมาย พี่แว่นคัดคำสั่งเด็ดๆ ที่โปรส่วนใหญ่นิยมใช้และมีประโยชน์มากๆ มาให้ครับ

1. การจูนหน่วยความจำ (Memory Limit)

ปัญหาคลาสสิกอย่าง Allowed memory size of … bytes exhausted หรือแม้แต่ Error 500 มักเกิดจากปลั๊กอินหรือธีมกินทรัพยากรเกินที่กำหนด เพราะโดยปกติแล้วระบบพื้นฐานของ WordPress จะให้เรามาประมาณ 128MB เท่านั้น (ขนาดอาจแตกต่างกันไปตามโฮสติ้งที่ให้บริการ) เราสามารถสั่งเพิ่มลิมิตแรมให้ WordPress ได้ผ่านไฟล์นี้ครับ

PHP

define( ‘WP_MEMORY_LIMIT’, ‘256M’ );

define( ‘WP_MAX_MEMORY_LIMIT’, ‘512M’ ); // สำหรับหน้า Admin

2. ระบบความปลอดภัยขั้นสูง (Security Keys & Salts)

ถ้าลองเปิดไฟล์นี้ดู จะเห็นชุดตัวอักษรยาวๆ ที่อ่านไม่รู้เรื่อง 8 บรรทัด (AUTH_KEY, SECURE_AUTH_KEY ฯลฯ) นี่คือ Salts ครับ มันคือการใส่รหัสเกลือเพื่อเข้ารหัสข้อมูลใน Cookies ของผู้ใช้งาน

  • ทริค หากคุณรู้สึกว่าเว็บโดนแฮก หรืออยากบังคับให้ User ทุกคน (รวมถึงตัวเรา) Log out ออกจากระบบทันที ให้ไปเจนเนอเรต Key ใหม่จากเว็บ WordPress API แล้วนำมาวางทับของเดิม ทุก Session จะหลุดทันทีครับ ทำให้ทุกคนต้อง Log in เข้ามาใหม่

3. การจัดการขยะและเวอร์ชัน (Post Revisions)

WordPress มีระบบ Auto-save และเก็บประวัติการแก้ไขบทความ (Revisions) ซึ่งถ้าปล่อยไว้นานๆ ฐานข้อมูลจะบวมอืดเพราะขยะพวกนี้ครับ เราสามารถจำกัดจำนวนได้

PHP

define( ‘WP_POST_REVISIONS’, 5 ); // เก็บประวัติแก้ไขล่าสุดแค่ 5 เวอร์ชัน

define( ‘EMPTY_TRASH_DAYS’, 7 ); // ลบไฟล์ในถังขยะทิ้งอัตโนมัติทุก 7 วัน

4. โหมดนักพัฒนา (Advanced Debugging)

เมื่อเว็บจอขาว หรือปลั๊กอินทำงานผิดปกติ การเปิด Debug Mode คือสิ่งที่ต้องทำครับ

PHP

define( ‘WP_DEBUG’, true );

define( ‘WP_DEBUG_LOG’, true ); // บันทึก Error ลงไฟล์ debug.log ในโฟลเดอร์ wp-content

define( ‘WP_DEBUG_DISPLAY’, false ); // ปิดไม่ให้ Error โชว์หน้าเว็บ (กันลูกค้าตกใจ)

.htaccess ผู้คุมกฎระดับเซิร์ฟเวอร์ (Apache/LiteSpeed)

ไฟล์ .htaccess (Hypertext Access) เป็นไฟล์ Configuration ของ Web Server ที่ทำงานในระดับ “ก่อน” ที่จะเข้าถึง PHP หรือ WordPress เสียอีกครับ นั่นหมายความว่า มันมีอำนาจในการ อนุญาต (Allow) หรือ บล็อก (Block) การเข้าถึงได้ตั้งแต่หน้าประตูบ้าน

ปกติไฟล์นี้จะถูกสร้างอัตโนมัติเมื่อเราไปกด Save ในเมนู Settings > Permalinks แต่เราสามารถเข้าไปเขียนกฎ (Rules) เพิ่มเติม เพื่อเพิ่มความปลอดภัยและสปีดได้ครับ

1. ป้องกันไฟล์สำคัญ (Hardening Security)

แฮกเกอร์มักจะจ้องเล่นงานไฟล์ wp-config.php เป็นที่แรก เพราะมีรหัสผ่านฐานข้อมูล เราสามารถเขียนสั่งบล็อกไม่ให้ใครเข้าถึงไฟล์นี้ได้ครับ:

Apache

<files wp-config.php>

order allow,deny

deny from all

</files>

2. ป้องกันการส่องโฟลเดอร์ (Disable Directory Browsing)

เคยไหมครับที่เข้าเว็บไปบางโฟลเดอร์แล้วเห็นรายชื่อไฟล์เรียงเป็นตับ? นั่นคือช่องโหว่ที่ทำให้แฮกเกอร์เห็นโครงสร้างเว็บเรา วิธีปิดคือง่ายมากครับ เติมบรรทัดนี้ลงไป:

Apache

Options -Indexes

3. การตั้งค่า 301 Redirect (เปลี่ยนเส้นทาง)

การย้ายหน้าเว็บ หรือเปลี่ยนโดเมน การทำ Redirect ผ่าน .htaccess จะทำงานได้เร็วกว่าใช้ปลั๊กอินมาก เพราะจัดการที่ระดับเซิร์ฟเวอร์เลย ตัวอย่างการ Redirect จากหน้าเก่าไปหน้าใหม่:

Apache

Redirect 301 /old-page/ https://www.yourdomain.com/new-page/

4. บล็อก IP ตัวป่วน

ถ้าคุณตรวจสอบ Log แล้วเจอ IP จากต่างประเทศพยายามยิงเว็บ หรือ Brute Force รหัสผ่าน คุณสามารถแบน IP นั้นถาวรได้เลย:

Apache

<Limit GET POST>

order allow,deny

deny from 123.456.78.9

allow from all

</Limit>

ข้อควรระวัง

การแก้ไขสองไฟล์นี้ต้องทำด้วยความระมัดระวังสูงสุดครับ เพราะไม่มีปุ่ม Undo เหมือนใน Word พี่แว่นขอฝากกฎเหล็ก 3 ข้อ

  1. Backup ก่อนเสมอ ก่อนจะแตะต้องไฟล์ ให้ดาวน์โหลดไฟล์ต้นฉบับมาเก็บไว้ในคอมพิวเตอร์ก่อน 1 ชุด ถ้าแก้แล้วพัง ก็แค่อัปโหลดตัวเดิมกลับขึ้นไป
  2. ใช้ Text Editor ที่ถูกต้อง ห้ามใช้ Notepad ของ Windows หรือ Microsoft Word แก้ไขเด็ดขาด เพราะมันอาจแอบใส่ตัวอักษรพิเศษที่มองไม่เห็นลงไป ให้ใช้โปรแกรมสำหรับเขียนโค้ดโดยเฉพาะ เช่น Notepad++, Sublime Text หรือ VS Code
  3. ตำแหน่งการวางโค้ด ในไฟล์ wp-config.php ห้ามวางโค้ดหลังบรรทัดที่เขียนว่า /* That’s all, stop editing! Happy publishing. */ เด็ดขาด โค้ดที่วางหลังบรรทัดนี้จะไม่ทำงานครับ

การเข้าใจและควบคุมไฟล์ wp-config.php และ .htaccess ได้ คือเส้นแบ่งระหว่างผู้ใช้งานทั่วไปกับ Webmaster มืออาชีพครับ ลองนำเทคนิคเหล่านี้ไปปรับจูนดู รับรองว่าเว็บไซต์ของคุณจะปลอดภัยและทำงานได้เสถียรขึ้นอย่างแน่นอน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *


ติดต่อ "แว่นTalk"