htaccess คืออะไร
.htaccess (ย่อจาก hypertext access) คือไฟล์กำหนดค่าของ Apache Web Server ใช้ควบคุมพฤติกรรมในระดับไดเรกทอรี เช่น การเปลี่ยนเส้นทาง URL ความปลอดภัย การควบคุมการเข้าถึง และการตั้งค่าเฮดเดอร์ต่าง ๆ
ไฟล์อยู่ที่ไหนบนโฮสติ้ง
ไฟล์เป็นข้อความธรรมดา วางไว้ที่ root ของเว็บไซต์ คือโฟลเดอร์ public_html
(หรือโฟลเดอร์ย่อยของโดเมน/ซับโดเมน) สามารถมีหลายไฟล์ในหลายไดเรกทอรีได้ แต่ หนึ่งไดเรกทอรีมีได้เพียงไฟล์เดียว ดูภาพรวมเส้นทางได้ที่ File Manager
ใช้ทำอะไรได้บ้าง
- เปลี่ยนเส้นทางด้วย 301 / 302 และจัดการ www vs non-www
- บังคับเข้า HTTPS และตั้งค่า ความปลอดภัย ระดับไดเรกทอรี
- ควบคุมการเข้าถึงโฟลเดอร์/ไฟล์ หรือ บล็อก IP ที่กำหนด
- ตั้ง ErrorDocument เช่น 404, 500 ให้ชี้หน้าเฉพาะ
- เปลี่ยนไทม์โซน/ตั้งค่าที่เกี่ยวกับบอตบางอย่างสำหรับไดเรกทอรี
ตัวอย่างคำสั่งที่พบบ่อย
# เปลี่ยนเส้นทางโฟลเดอร์เดิมไปยังโฟลเดอร์ใหม่ Redirect /old_dir/ https://www.yourdomain.com/new_dir/index.html # หน้าข้อผิดพลาดกำหนดเอง ErrorDocument 404 https://www.yourdomain.com/404/ ErrorDocument 500 https://www.yourdomain.com/500/ # บล็อกผู้ใช้ตาม IP order allow,deny deny from 123.123.0.0 deny from 123.12.12. allow from all # หรือ อนุญาตเฉพาะ IP เดียว ห้ามที่เหลือ order allow,deny allow from 123.123.0.0 deny from all # บังคับ http -> https RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^ https://www.yourdomain.com%{REQUEST_URI} [NC,L] # บังคับให้มี www RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^ https://www.yourdomain.com%{REQUEST_URI} [NC,L]
ดูแนวทางการรีไดเรกต์แบบปลอดภัยได้ที่ Redirect Best Practices และการวางโครงสร้าง URL ที่ดีต่อ SEO ได้ที่ SEO URL Structure
WordPress สร้าง htaccess ให้อัตโนมัติหรือไม่
บนโฮสติ้งที่ติดตั้ง WordPress ระบบมักสร้างไฟล์ .htaccess
ใน public_html
ให้อัตโนมัติเพื่อรองรับ Permalinks หากเป็นเว็บที่ไม่ได้ใช้แพกเกจ WordPress สำเร็จรูป อาจต้องสร้างไฟล์เองผ่านตัวจัดการไฟล์ของโฮสต์
ข้อควรระวังและทิป
- แก้ไขเป็นขั้นตอน ทีละบล็อก และสำรองไฟล์ก่อนเปลี่ยนทุกครั้ง
- หากเกิด 500 Internal Server Error ให้ย้อนการแก้ไขล่าสุดหรือตรวจไวยากรณ์ mod_rewrite
- ทดสอบรีไดเรกต์ด้วย HTTP Check และ ตัวตรวจ 301
- ใช้งานร่วมกับ SSL และตั้งค่า HSTS เมื่อบังคับ HTTPS แล้ว