.htaccess คืออะไร ไฟล์ที่ใช้ควบคุมไฟล์ต่าง ๆ ในการเข้าถึงไดเรคทอรี่
มาทำความรู้จักไฟล์ .htaccess ว่ามันคืออะไร
ไฟล์ .htaccess (Hypertext Access) เป็นไฟล์กำหนดค่าการตั้งค่าและการกำหนดสิทธิ์ในเซิร์ฟเวอร์เว็บไซต์ Apache HTTP Server หรือเซิร์ฟเวอร์ที่ใช้ Apache เป็นพื้นฐาน ไฟล์ .htaccess สามารถนำมาใช้ปรับแต่งพฤติกรรมของเว็บไซต์ได้หลากหลายเช่น การเปลี่ยนทิศทาง URL (URL rewriting), การกำหนดสิทธิ์การเข้าถึงไฟล์, การป้องกันการเข้าถึงข้อมูลที่ต้องการเป็นความลับ (access control), และอื่น ๆ อีกมากมาย
คำสั่งและค่าที่ระบุในไฟล์ .htaccess สามารถใช้งานในหลากหลาย
เช่น
- เปลี่ยนเส้นทาง URL (URL Rewriting) ใช้คำสั่ง RewriteRule เพื่อเปลี่ยนรูปแบบของ URL หรือทำการเปลี่ยนเส้นทาง URL โดยไม่ต้องเปลี่ยนที่อยู่จริงของไฟล์
- การกำหนดสิทธิ์และการเข้าถึงไฟล์ ใช้คำสั่งร่วมกับค่า Allow/Deny เพื่อกำหนดสิทธิ์การเข้าถึงไฟล์และโฟลเดอร์ เช่น จำกัดการเข้าถึงเฉพาะผู้ใช้ที่มีสิทธิ์
- การป้องกันการเข้าถึงผิดกฎ (Hotlinking) ใช้คำสั่ง RewriteCond เพื่อตรวจสอบการเข้าถึงไฟล์ผ่านลิงก์จากเว็บไซต์อื่น และใช้ RewriteRule เพื่อระงับการเข้าถึงหากมีการเข้าถึงผิดกฎ
- การตั้งค่า Error Pages ใช้คำสั่ง ErrorDocument เพื่อกำหนดหน้าข้อผิดพลาดที่จะแสดงให้ผู้ใช้เมื่อพบข้อผิดพลาดบนเว็บไซต์
- การใช้งาน HTTPS ใช้คำสั่ง RewriteCond เพื่อเช็คการเชื่อมต่อและ RewriteRule เพื่อบังคับให้เว็บไซต์ใช้งานผ่าน HTTPS สำหรับความปลอดภัย
- การจัดการแคชและประสิทธิภาพ ใช้คำสั่ง ExpiresByType เพื่อกำหนดการหมดอายุของแคชสำหรับประเภทไฟล์ต่างๆ และใช้คำสั่ง Header เพื่อกำหนดส่วนหัว HTTP สำหรับการเพิ่มประสิทธิภาพ
- การเปลี่ยนแปลงการตั้งค่าอื่นๆ ยังมีคำสั่งและค่าอื่นๆ ที่สามารถใช้งานได้ เช่น DirectoryIndex เพื่อกำหนดไฟล์หน้าแรกที่จะถูกแสดง, AddDefaultCharset เพื่อกำหนดชุดอักขระเริ่มต้น, AllowOverride เพื่อกำหนดการอนุญาตให้ใช้งานไฟล์ .htaccess และอื่น ๆ
การใช้งานพื้นฐาน
ซึ่งเริ่มต้นด้วยการให้เราไปสร้างไฟล์ .htaccess ซึ่งเราวางในส่วนของโปรเจคของเราที่จะนำไปใช้งาน
- การใช้งานไฟล์ .htaccess ร่วมกับ PHP สามารถทำได้ในหลายประเด็น เพื่อปรับแต่งพฤติกรรมของเว็บแอปพลิเคชัน PHP ของเรา นี่คือการใช้งานพื้นฐาน ซึ่งสามารถนำไปใช้กับ PHP
คำสั่งนี้จะเปิดใช้งานการเปลี่ยนเส้นทาง URL ในไฟล์ .htaccess ของคุณ.
RewriteEngine On
- การกำหนดเส้นทาง URL: สามารถใช้ RewriteRule เพื่อกำหนดเส้นทาง URL ใหม่ที่จะถูกส่งไปยังแอปพลิเคชัน PHP ตัวอย่างเช่น
คำสั่งนี้จะเปลี่ยนเส้นทาง URL /products/123 เป็น /product.php?id=123RewriteRule ^products/([0-9]+)/?$ product.php?id=$1 [L]
- การกำหนดสิทธิ์และการเข้าถึง สามารถใช้ Allow และ Deny เพื่อกำหนดสิทธิ์การเข้าถึงไฟล์และโฟลเดอร์ของแอปพลิเคชัน PHP ได้ เช่น
คำสั่งนี้จะป้องกันการเข้าถึงทุกคน และเราสามารถปรับแต่งการกำหนดสิทธิ์ตามความต้องการได้Order Deny,Allow Deny from all
- การตั้งค่า MIME Types: ใช้ AddType เพื่อกำหนดชนิด MIME สำหรับไฟล์ในแอปพลิเคชัน PHP เช่น
คำสั่งนี้บอกให้ Apache รู้จักไฟล์ .php เป็นไฟล์ PHP
AddType application/x-httpd-php .php
- การจัดการแคชและประสิทธิภาพ สามารถใช้คำสั่ง ExpiresByType เพื่อกำหนดระยะเวลาแคชสำหรับไฟล์ที่ถูกเข้าถึง และใช้คำสั่ง Header เพื่อกำหนดส่วนหัว HTTP เพิ่มเติมเพื่อปรับปรุงประสิทธิภาพของเว็บไซต์
คำสั่งนี้จะกำหนดให้เนื้อหา HTML ถูกแคชเป็นเวลา 1 ชั่วโมง.
ExpiresActive On ExpiresByType text/html "access plus 1 hour"
-
การบังคับใช้ HTTPS ใช้ RewriteCond เพื่อตรวจสอบการเชื่อมต่อและใช้ RewriteRule เพื่อบังคับให้เว็บไซต์ใช้งานผ่าน HTTPS เพื่อเพิ่มความปลอดภัย ซึ่งคำสั่งนี้จะบังคับให้เว็บไซต์ใช้งานผ่าน HTTPS ถ้ายังไม่ได้เชื่อมต่อผ่าน HTTPS.
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
ตัวอย่างการทำใช้ไฟล์ .htaccess ทำแคชไฟล์ css และไฟล์ js
- สร้างไฟล์ index.php ให้สร้างเมนู
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Test</title> <link rel="stylesheet" href="/css/style.css"> <script src="/js/jquery-3.7.1.min.js"></script> </head> <body> <ul> <li><a class="active" href="#home">Home</a></li> <li><a href="#news">News</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#about">About</a></li> </ul> <div id="text"></div> <script> jQuery(function ($) { $("#text").text('สวัสดีครับ'); }); </script> </body> </html>
- ให้เราสร้างโฟลเดอร์และไฟล์ css (ไฟล์ style.css) ตำแหน่งไฟล์ css/style.css
* { margin: 0; padding: 0; box-sizing: border-box; } ul { list-style-type: none; margin: 0; padding: 0; overflow: hidden; background-color: #333; } li { float: left; } li a { display: block; color: white; text-align: center; padding: 14px 16px; text-decoration: none; } li a:hover { background-color: #111; } body { background-color: #ccc; }
- เพิ่มไฟล์ .htaccess ในโปรเจคของเราให้เพิ่มโค้ดการทำแคชไฟล์ css และไฟล์ js นั้นเอง
ซึ่งเราจะกำหนดให้ไฟล์ css กับไฟล์ js แคช 1 เดือน และกำหนดให้แคชสำหรับไฟล์ทั้งหมดเป็นเวลา 2 วัน
<IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css "access 1 month" ExpiresByType application/javascript "access 1 month" ExpiresDefault "access 2 days" </IfModule>
- ผลลัพธ์ที่ได้คือ ถ้าเกิดเราไปดูที่โปรเจคของเรา และคลิกขวากับเลือกตรวจสอบ (ส่วนของผู้พัฒนา) หรือคลิกที่ปุ่ม F12 และไปที่ network เพื่อดูไฟล์ต่าง ๆ นั้นเอง
ซึ่งเราสังเกตุเห็นได้ว่าไฟล์ css และไฟล์ js ติดสถานะแคช เพื่อเท่นี้เราสามารถทำแคชไฟล์เพื่อช่วยลดการโหลดไฟล์ ไม่ให้ไฟล์ติดโหลดใหม่ทุกครั้ง
ไฟล์ .htaccess เป็นเครื่องมือที่มีประโยชน์ในการปรับแต่งและควบคุมการทำงานของเว็บไซต์ของเราโดยไม่ต้องแก้ไขการตั้งค่าในระดับเซิร์ฟเวอร์ ซึ่งช่วยให้เราสามารถปรับแต่งการทำงานของเว็บไซต์ได้อย่างยืดหยุ่นและมีความคุ้มค่าสำหรับการบริหารจัดการเว็บไซต์ของเราให้มีประสิทธิภาพและปลอดภัยมากยิ่งขึ้นได้เช่นกัน
,[ออนไลน์], เข้าถึงได้จาก https://help.dreamhost.com/hc/en-us/articles/216363157-Cache-a-website-with-an-htaccess-file