.htaccess คืออะไร ไฟล์ที่ใช้ควบคุมไฟล์ต่าง ๆ ในการเข้าถึงไดเรคทอรี่

ไฟล์ที่ถูกเรียกใช้เกี่ยวกับการ config ระบบเริ่มต้นเพื่อใช้ในการควบคุมไฟล์ต่างๆผู้ที่มีสิทธิ์หรือไม่มีสิทธิ์ในการเข้าถึงไดเรคทอรี่เฉพาะจากอินเตอร์เน็ต  สามารถแก้ไข Config ของระบบบางอย่างเพื่อให้ใช้งานได้เหมาะสมกับเว็บไซต์เรา
ไฟล์ที่ถูกเรียกใช้เกี่ยวกับการ config ต่าง ๆ

มาทำความรู้จักไฟล์ .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=123
    RewriteRule ^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

  1. สร้างไฟล์ 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>
  2. ให้เราสร้างโฟลเดอร์และไฟล์ 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;
    }​
  3. เพิ่มไฟล์ .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>​
  4. ผลลัพธ์ที่ได้คือ ถ้าเกิดเราไปดูที่โปรเจคของเรา และคลิกขวากับเลือกตรวจสอบ (ส่วนของผู้พัฒนา) หรือคลิกที่ปุ่ม F12 และไปที่ network เพื่อดูไฟล์ต่าง ๆ นั้นเอง

    กดดูส่วนพัฒนาของโปรเจเพื่อเข้าไปดู Network
    กดดูส่วนพัฒนาของโปรเจค
    ซึ่งเราสังเกตุเห็นได้ว่าไฟล์ css และไฟล์ js ติดสถานะแคช เพื่อเท่นี้เราสามารถทำแคชไฟล์เพื่อช่วยลดการโหลดไฟล์ ไม่ให้ไฟล์ติดโหลดใหม่ทุกครั้ง
    สังเกตุเห็นได้เลยว่าไฟล์ css และไฟล์ js ติดแคชนั้นเอง
    แคชไฟล์ css และไฟล์ js

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


อ้างอิง
What is .htaccess? ,[ออนไลน์], เข้าถึงได้จาก https://www.hostpapa.com/knowledgebase/what-is-htaccess/
Cache a website with an .htaccess file 
,[ออนไลน์], เข้าถึงได้จาก https://help.dreamhost.com/hc/en-us/articles/216363157-Cache-a-website-with-an-htaccess-file
รวมคำสั่ง .htaccess ,[ออนไลน์], เข้าถึงได้จาก https://www.nokhosting.com/info/htaccess
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การทำ natural language processing ด้วยภาษา python
โดย wightfall พ 24 เม.ย. 2024 12:54 pm บอร์ด Python Knowledge
0
6
พ 24 เม.ย. 2024 12:54 pm โดย wightfall View Topic การทำ natural language processing ด้วยภาษา python
การเขียนโปรแกรมเชิงวัตถุด้วยภาษา python
โดย wightfall อ 23 เม.ย. 2024 4:13 pm บอร์ด Python Knowledge
0
25
อ 23 เม.ย. 2024 4:13 pm โดย wightfall View Topic การเขียนโปรแกรมเชิงวัตถุด้วยภาษา python
แนะนำการเดินทางและสถานที่ท่องเที่ยวในจังหวัดตรังและการเดินทางไปกรุงเทพ
โดย wightfall จ 22 เม.ย. 2024 3:41 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
40
จ 22 เม.ย. 2024 3:41 pm โดย wightfall View Topic แนะนำการเดินทางและสถานที่ท่องเที่ยวในจังหวัดตรังและการเดินทางไปกรุงเทพ
ติดตั้ง ESXi ใหม่ จำเป็นต้อง Format Harddisk ก่อนติดตั้งไหมครับ
โดย จิ๊กโก๋ ส 20 เม.ย. 2024 2:29 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
3
161
อ 23 เม.ย. 2024 2:24 pm โดย mindphp View Topic ติดตั้ง ESXi ใหม่ จำเป็นต้อง Format Harddisk ก่อนติดตั้งไหมครับ
แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
โดย internTk21 ศ 19 เม.ย. 2024 11:56 am บอร์ด MindPHP News & Feedback
1
54
ศ 19 เม.ย. 2024 12:15 pm โดย internTk21 View Topic แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
โดย eange08 ศ 19 เม.ย. 2024 9:56 am บอร์ด Programming - PHP
1
101
ศ 19 เม.ย. 2024 10:28 am โดย mindphp View Topic สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว tar, zip
โดย mindphp พ 17 เม.ย. 2024 7:42 pm บอร์ด Linux - Web Server
0
136
พ 17 เม.ย. 2024 7:42 pm โดย mindphp View Topic คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว  tar, zip
เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
โดย mindphp จ 15 เม.ย. 2024 11:10 pm บอร์ด PostgreSQL
1
307
จ 15 เม.ย. 2024 11:14 pm โดย mindphp View Topic เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line