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

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

ไฟล์ .htaccess คือ ไฟล์ที่ใช้ตั้งค่าหรือกำหนดค่าต่างๆ บนเว็บเซิร์ฟเวอร์ที่ใช้ซอฟต์แวร์ Apache Web Server โดยไฟล์นี้จะถูกวางไว้ในโฟลเดอร์หรือไดเรกทอรี่หลักของเว็บไซต์ หากมีการเปิดใช้งานเว็บไซต์ เซิร์ฟเวอร์ Apache จะอ่านและประมวลผลไฟล์ .htaccess เพื่อปรับแต่งพฤติกรรมและการทำงานของเว็บไซต์

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

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

วิธีการใช้งาน .htaccess

ใช่เราสามารถสร้างไฟล์ .htaccess ได้โดยใช้ Text Editor ต่างๆ เช่น Visual Studio Code (แนะนำ), Notepad, WordPad, TextPad, Sublime Text หรือโปรแกรมอื่นๆ ที่ใช้ในการแก้ไขข้อความ ดังนั้นเมื่อต้องการสร้างไฟล์ .htaccess คุณสามารถทำตามขั้นตอนเหล่านี้

  1. เปิด Text Editor ที่คุณต้องการใช้งาน เช่น Notepad, Sublime Text เป็นต้น
  2. เขียนหรือวางคำสั่งที่คุณต้องการใช้งานในไฟล์ .htaccess ตามความต้องการ เช่นการเปลี่ยนเส้นทาง URL หรือการป้องกันการเข้าถึงไฟล์
  3. เมื่อเสร็จสิ้นการเขียนหรือวางคำสั่งในไฟล์ .htaccess ให้บันทึกไฟล์ด้วยนามสกุล .htaccess (ต้องมีจุดข้างหน้า) เช่น .htaccess
  4. หากคุณต้องการนำไฟล์ .htaccess ไปใช้กับโฟลเดอร์หรือไดเรกทอรี่ที่คุณต้องการควบคุม ให้นำไฟล์ .htaccess ที่คุณได้สร้างมาวางไว้ในโฟลเดอร์นั้น

ไฟล์ .htaccess จะมีผลต่อพฤติกรรมและการทำงานของเว็บไซต์ที่คุณใช้งาน และเมื่อเว็บเซิร์ฟเวอร์ Apache เริ่มทำงาน เซิร์ฟเวอร์จะอ่านและประมวลผลไฟล์ .htaccess เพื่อปรับแต่งพฤติกรรมตามที่คุณได้กำหนดไว้

คำสั่งที่ใช้งานบ่อยๆ ใน .htaccess

1. Redirects

Redirect /old_dir/ http://www.yourdomain.com/new_dir/index.html

คำสั่งนี้เป็นคำสั่งที่แจ้งให้ Apache Web Server ทำการรีไดเร็กหรือเปลี่ยนหน้าจากหน้าเก่าไปยังหน้าใหม่ ใช้เมื่อในกรณีที่เราเปลี่ยนชื่อลิงก์ URL จากตัวอย่างจะเห็นได้ว่าเราทำการแจ้งให้ทำการรีไดเร็กจากโฟลเดอร์เก่าที่ชื่อ old_dir ไปยังโฟลเดอร์ใหม่ที่ชื่อ new_dir โดยมีชื่อไฟล์เหมือนเดิมคือ index.html

2. Error documents

ErrorDocument 404 /error_pages/404.html

คำสั่งนี้จะเป็นคำสั่งที่แจ้งให้ Apache Web Server ทำการแสดงหน้า /error_pages/404.html ทุกครั้งเมื่อเกิดการแสดงผลผิดพลาด 404 Not Found เราสามารถทำในลักษณะเดียวกันกับการแสดงผลผิดพลาดในรหัสอื่นๆ เช่น 401 Unauthorised, 403 Forbidden, 500 Internal Server Error

3. Password Protection

AuthName “Member’s Area Name”
AuthUserFile /path/to/password/file/.htpasswd
AuthType Basic
require valid-user

คำสั่งนี้เป็นคำสั่งที่ป้องกันการเข้าถึงเว็บไซต์ของ Apache Web Server ซึ่งจะแสดงกล่องข้อความป๊อบอัพให้เราทำการล็อกอินด้วยการกรอกข้อมูลผู้ใช้งาน (Username) และรหัสผ่าน (Password) ก่อนเข้าสู่ระบบหลังบ้าน ประกอบไปด้วยข้อมูลดังต่อไปนี้

  • บรรทัดที่ 1: AuthName จะเป็นชื่อของระบบที่เราต้องการให้ใช้สิทธิการเข้าถึง
  • บรรทัดที่ 2: AuthUserFile เป็นส่วนที่เราระบุ path ที่เก็บไฟล์รหัสผ่านที่ชื่อ .htpasswd เอาไว้
  • บรรทัดที่ 3: AuthType เป็นการระบุประเภทของการ Authen ในที่นี้ถูกระบุเป็น basic โดยอ้างอิงมาจาก HTTP authentication
  • บรรทัดที่ 4: require เป็นการระบุว่าเราต้องการผู้ใช้งานที่ผ่านการล็อกอินแล้วเท่านั้น เราอาจจะระบุให้เป็นเฉพาะผู้ใช้งานนั้นๆ ได้ เช่น เขียนเป็น require user username หมายถึง เราต้องการให้คนที่ใช้ชื่อผู้ใช้งาน username เท่านั้นที่จะสามารถใช้งานได้

สำหรับในส่วนของไฟล์รหัสผ่านนั้น ในที่นี้ใช้ชื่อ .htpasswd เราจำเป็นที่จะต้องใส่รหัสลงไปในไฟล์ดังกล่าวด้วย ระบบของ Apache Web Server จะทำการตรวจสอบกับไฟล์ดังกล่าวก่อนที่จะให้ใช้งาน วิธีการใส่ข้อมูลก็ให้ใส่เป็น ชื่อผู้ใช้งาน:รหัสผ่าน ตามด้านล่างนี้ รหัสผ่านที่แสดงนั้นเราอาจจะทำการนำไปเข้ารหัสก่อน (Encrypted) เพื่อเป็นการป้องกันความปลอดภัยอีกขั้นหนึ่ง ในกรณีที่เรามีหลายผู้ใช้งานให้พิมพ์หนึ่งผู้ใช้งานต่อหนึ่งบรรทัด

4. Deny visitiors by IP Address

order allow,deny
deny from 255.0.0.0
deny from 123.45.6.
allow from all

สำหรับคำสั่งนี้เป็นคำสั่งไม่อนุญาตให้ใครก็ตามที่ใช้ IP ที่ระบุไว้ไม่สามารถเข้าใช้งานได้ จากตัวอย่างจะเห็นว่า เราจะไม่ให้ผู้ใช้งานที่มีไอพี 255.0.0.0 และผู้ใช้งานไอพี 123.45.6 (ตั้งแต่ 123.45.6.10 ถึง 123.45.6.255) เข้าใช้งาน

order allow,deny
allow from 255.0.0.0
deny from all

สำหรับอีกตัวอย่างหนึ่งเป็นการไม่อนุญาตให้เข้ามาใช้งานทุกไอพียกเว้นไอพี 255.0.0.0 เท่านั้น

5. Deny visitors by referrer

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} otherdomain\.com [NC]
RewriteRule .* – [F]

ประโยคด้านบนหมายถึง ให้ Apache Web Server ทำการบล็อกทราฟฟิกที่เข้ามาจาก URL ที่ชื่อ Otherdomain.com ในส่วนของ [NC] หมายถึงไม่ว่าจะเข้ามาในลักษณะใดดังต่อไปนี้ก็จะทำการบล็อก

ได้แก่ otherdomain.com หรือ OTHERDOMAIN.COM เป็นต้น

แต่ถ้าเราต้องการบล็อกมากกว่า 2 โดเมน ให้ทำการเพิ่ม OR เข้าไป ดังนี้

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} otherdomain\.com [NC,OR]
RewriteCond %{HTTP_REFERER} anotherdomain\.com
RewriteRule .* – [F]

และสำหรับ # เป็นการปิดการใช้งานของบรรทัดนั้นๆ

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
RewriteRule \.(gif|jpg|css)$ – [F]

ประโยคด้านบนหมายถึง ให้ป้องกันการเข้าถึงไฟล์นามสกุล gif, jpg, css โดยให้ลิงก์ที่สามารถเข้าถึงได้นั้นจะต้องชื่อ yourdomain.com เท่านั้น

7. Adding MIME types

AddType text/html .html .htm
AddType text/plain .txt
AddType application/pdf .pdf
AddType image/jpeg .jpeg .jpg .jpe .JPG

เป็นการระบุว่าไฟล์นามสกุลที่เราจะใช้งานในเว็บนั้นเป็นไฟล์เกี่ยวกับอะไร ซึ่งเว็บเซิฟเวอร์ต้องการที่จะรู้เพื่อช่วยในการประมวลผลไฟล์นั้นๆ จากตัวอย่างด้านบนจะเห็นว่า มีการระบุไฟล์ .html, .htm เป็นไฟล์ text ไฟล์ pdf เป็นไฟล์ application และไฟล์ jpg เป็นไฟล์รูปภาพ เป็นต้น

8. คำสั่งอื่นๆ เพิ่มเติม

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

การใช้ .htaccess บน WordPress

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

# 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

ความหมายของ .htaccess ใน WordPress

RewriteBase /
RewriteRule ^index\.php$ – [L]

หมายถึงในกรณีที่เข้าหน้าเว็บปกติ เช่น https://ww.knmasters.com ให้ไปเปิดแสดงผลลิงก์หน้า https://backup.knmasters.com/index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

ซึ่งในส่วนนี้หมายถึง ถ้าไฟล์ที่ถูกระบุในเบราเซอร์ไม่มี หรือ ไดเร็กทอรี่ที่ถูกระบุในเบราเซอร์ไม่มี ให้เว็บไซต์ไปยังบรรทัดถัดไป ซึ่งก็คือหน้า index.php

บทความที่น่าสนใจ

KNmasters
แผนที่ Google (Google Maps) คืออะไร?
Google Maps เป็นบริการแผนที่ออนไลน์ที่ถูกพัฒนาโดย Google ซึ่งเป็นหนึ่งในบริการที่ได้รับความนิยมอย่าง...
KNmasters
SEO สายดำ (Black Hat SEO) คืออะไร?
ในโลกของการทำ SEO (Search Engine Optimization) มีกลยุทธ์และวิธีการหลายแบบที่นำมาใช้เพื่อเพิ่มการแสดง...
KNmasters
การตลาดออนไลน์ (Digital Marketing) คืออะไร? สำคัญต่อธุรกิจอย่างไร?
บทความนี้จะอธิบายเกี่ยวกับการตลาดออนไลน์หรือ Digital Marketing ซึ่งเป็นกลยุทธ์การตลาดที่ใช้สื่อดิจิท...
KNmasters
SEO สายเทา (Gray Hat SEO) คืออะไร? แตกต่างจาก SEO สายขาวอย่างไร?
SEO สายเทา เป็นเรื่องที่ได้รับความสนใจอย่างมากในวงการการตลาดออนไลน์ โดยเฉพาะในช่วงเวลาปัจจุบันที่การ...
seo search engine optimization modish ecommerce online retail business showing computer screen (Website)
SEO (Search Engine Optimization) คืออะไร? ถ้าอยากให้เว็บไซต์ติดอันดับบน Google ต้องรู้!
SEO (Search Engine Optimization) หรือการปรับแต่งเว็บไซต์เพื่อให้ติดอันดับบน Google มีความสำคัญอย่างม...
KNmasters
เทคโนโลยีอินเทอร์เน็ต Web 1.0 การท่องโลกอินเทอร์เน็ตยุคแรก
Web 1.0 เป็นระบบเว็บไซต์ในยุคแรกของอินเทอร์เน็ตที่เริ่มเปิดใช้ในต้นปี 1990 โดยเริ่มต้นจากการใช้งานเพ...