การใช้งาน Apache บนระบบปฏิบัติการตระกูลยูนิกส์/ลีนุกซ์ นั่นมีข้อดีอยู่อย่างหนึ่ง คือ กำหนดหรือปรับแต่งค่าสำหรับแสดงผลหน้าเวบเพจเฉพาะส่วนโดยไม่ต้องแก้ไขค่าใน httpd.conf ผ่านเวบเซิร์ฟเวอร์ นั่นทำได้โดยกำหนดค่าผ่านไฟล์ .htaccess แถมไม่ต้องสั่งรีสตาร์ท Apache ใหม่เพื่อโหลดค่าคอนฟิกเข้ามาแต่จะสามารถใช้งานได้ทันทีเมื่ออัปโหลดขึ้นไปไว้บนเวบเซิร์ฟเวอร์ นับว่าเป็นข้อดีทีเดียว แต่เสียใจสำหรับคนที่ใช้ Apache บนวินโดวส์คงจะทำไม่ได้เนื่องจากไม่เข้าใจไฟล์ที่มีเฉพาะนามสกุล
โดยไฟล์ .htaccess จะถูกโหลดทุกครั้งเมื่อเรียกชื่อเวบไซต์และไดเรกทอรี่ที่ต้องการและจะมีผลเฉพาะส่วนไม่มีผลกระทบกับระบบโดยรวม หรือค่าคอนฟิกในไฟล์ .htaccess เป็นส่วนค่าคอนฟิกเพิ่มเติมสำหรับใช้ร่วมกับไฟล์ httpd.conf นั่นเอง
เมื่อคุณอัปโหลดไฟล์ .htaccess ขึ้นไปด้วยโปรแกรม FileZilla นั่นจะพบว่า จะไม่สามารถมองเห็นได้เพราะตามหลักของระบบไฟล์บนระบบปฏิบัติการตระกูลยูนิกส์/ลีนุกซ์นั่นจะถือว่าไฟล์ที่ขึ้นต้นด้วยจุด (.) นำหน้าจะถือว่าเป็นไฟล์ที่ซ่อนไว้ไม่ให้มองเห็นได้ ทำให้บางคนนึกว่ายังไม่ได้อัปโหลดขึ้นไปที
ไฟล์ .htaccess สามารถนำไปใช้งานต่างๆ ได้อย่างไรบ้าง มีรายละเอียดดังนี้
1.แสดงหน้าชนิดข้อผิดพลาด
ปกติเมื่อเรียกหน้าเวบเพจ Apache จะตรวจสอบว่าพบหน้าเวบเพจหรือเปล่าโดยจะแจ้งสถานะการค้นหาเวบเพจว่าเป็นสถานะอะไร โดยมีเลขบอกสถานะต่างๆ ดังนี้
– 200 : เมื่อพบหน้าเวบเพจนี้
– 401 : เมื่อต้องการรหัสผ่านยนยันสิทธิ์ในการใช้งาน
– 403 : เมื่อไม่อนุญาติให้เรียกใช้งาน
– 404 : เมื่อไม่พบหน้าเวบเพจ
– 405 : มีขบวนการบ้างอย่างไม่ได้รับอนุญาติ
– 500 : เกิดข้อผิดพลาดจากการทำงานภายในระบบ
โดยเมื่อเกิดข้อผิดพลาดเกิดขึ้นเวบเซิร์ฟเวอร์จะสอบถามไปยังไฟล์ .htaccess ว่าจะตอบสนองอย่างไร โดยมีรูปแบบในไฟล์ .htaccess ดังนี้
ErrorDocument หมายเลขสถานะข้อผิดพลาด ที่ตั้งของไฟล์เมื่อเกิดข้อผิดพลาดเกิดขึ้น
ตัวอย่างเช่น
ErrorDocument 404 /errorpages/404.html
ErrorDocument 403 /errorpages/403.html
ErrorDocument 500 /errorpages/500.html
2.ยับยั้งไม่ให้ใช้งาน
ถ้าคุณมีไดเรกทอรี่ที่ไม่ต้องการให้ใครเข้าไปได้เนื่องจากมีไฟล์รูปภาพหรือเอกสารสำคัญในนั่น คุณสามารถสร้างไฟล์ .htaccess ขึ้นมาและกำหนดค่านี้ลงไป
IndexIgnore ชนิดของไฟล์
ตัวอย่างเช่น
IndexIgnore * หมายความว่าไม่ให้แสดงไฟล์ใดๆ ในไดเรกทอรี่นี้
IndexIgnore *.jpg *.gif *.png *.txt หมายความว่าให้ไม่แสดงไฟล์ที่มีนามสกุล jpg , gif , png , txt
3.สร้างไฟล์หน้าแรกขึ้นมาใหม่
ไฟล์หน้าแรกสำหรับไดเรกทอรี่ใดที่ต้องการให้มีชื่อไฟล์ใหม่แทนที่จะใช้ไฟล์ index.html , index.shtml , default.html นั่นคุณสามารถกำหนดชื่อไฟล์สำหรับหน้าแรกขึ้นมาให่ได้โดยมีรูปแบบดังนี้
DirectoryIndex ชื่อไฟล์หน้าแรกใหม่
ตัวอย่างเช่น
DirectoryIndex yoursite.html
DirectoryIndex yoursite.html /cgi-bin/index.pl /index.html
โดยจะให้ลำดับความสำคัญในการหาไฟล์หน้าแรกตามลำดับจากซ้ายมาขวา
4.เพิ่มความสามารถ SSI
บางเวบเซิร์ฟเวอร์ที่ใช้ Apache นั่นไม่ได้ตั้งค่าให้ใช้ความสามารถ SSI (Server Side Includes)ที่จะใช้การสร้างเวบเพจร่วมกับเวบเซิร์ฟเวอร์ วิธีการนี้เมื่อก่อนเป็นที่นิยมสมัยที่ Perl ยังเฟื่องฟู ปัจจุบันนี้ส่วนใหญ่ไม่ค่อยใช้งานแล้วจึงตัดค่าคอนฟิกนี้ออกไป ถ้าเวบเซิร์ฟเวอร์ยอมให้ใช้ .htaccess คุณก็สามารถเพิ่มเข้าไปได้ดังนี้
AddType text/html .shtml
AddHandler server-parsed .shtml
AddHandler server-parsed .html
Options Indexes FollowSymLinks Includes
ในแต่ละบรรทัดมีรายละเอียดดังนี้
บรรทัดที่ 1 : เพิ่มชนิดไฟล์แบบ text/html นั่นมีนามสกุล .shtml เพิ่มเข้าไป
บรรทัดที่ 2-3 : เพิ่มการทำงานร่วมกับเวบเซิร์ฟเวอร์ให้กับนามสกุลไฟล์ .shtml และ .html
บรรทัดที่ 4 : เพิ่มออปชั่นบอกให้ทำงานแบบ SSI หากขาดบรรทัดนี้จะไม่สามารถใช้งานได้
5.รีไดเรกไฟล์
บางครั้งจำเป็นต้องส่งต่อไฟล์ไปยังที่อยู่ใหม่ โดยระบุลงไปในไฟล์ .htaccess เมื่อมีการเรียกไฟล์ดังกล่าวให้เวบเซิร์ฟเวอร์ส่งต่อไปยังที่อยู่ของไฟล์ใหม่หรือชื่อไฟล์ใหม่ โดยมีรูปแบบดังนี้
Redirect ชื่อไฟล์เก่า ชื่อไฟล์ใหม่พร้อมที่อยู่
ตัวอย่างเช่น
Redirect /oldfile.html /newfile.html
Redirect /oldfile.html http://www.yournewsite.com/newfile.html
6.จำกัดการใช้งาน
คุณสามารถจำกัดการใช้งานไดเรกทอรี่ที่ต้องการ โดยระบุว่ามาจากที่ใดสามารถเข้าได้บ้าง โดยมีรูปแบบดังนี้
order allow,deny
deny from ชื่อโดเมนเนมหรือไอพีแอดเดรส
allow from ชื่อโดเมนเนมหรือไอพีแอดเดรส
ตัวอย่างเช่น
order allow,deny
deny from 64.45.16.87
deny from really-bad-domain.net
allow from all
บรรทัดแรกกำหนดลำดับความสำคัญการอนุญาติหริอปฏิเสธการทำงาน โดยคุณสามารถสลับตำแหน่งของค่าทั้งสองได้ โดยให้ลำดับความสำคัญค่าทางซ้ายมือก่อนค่าทางขวามือ
บรรทัดต่อมาคือกำหนดชื่อโดเมนเนมหรือไอพีแอดเดรสใดที่อนุญาติได้บ้างจากตัวอย่างไม่อนุญาติเครื่องหมายเลขไอพี 64.45.16.87 และมาจากโดเมนเนม really-bad-domain.net เข้าได้
7.ใส่รห้สผ่านและยูสเซอร์เนม
ก่อนอื่นต้องสร้างยูสเซอร์เนมและรหัสผ่านขึ้นมาก่อน โดยใช้โปรแกรมที่ชื่อ htpasswd โดยต้อง Telnet เข้าไปใน Shell และเรียกคำสั่งต่อไปนี้
htpasswd -c /home/[domainname]/.htpasswd [username]
โดยเรียกโปรแกรม htpasswd ออปชั่น -c คือให้สร้างไฟล์ขึ้นมาใหม่ ออปชั่นตัวต่อไปคือพาทที่ตั้งของไฟล์ .htpasswd ที่จะถูกสร้างขึ้นมา ตามด้วยชื่อยูสเซอร์ที่จะสร้าง จะปรากฏบรรทัดคำสั่งให้กรอกรหัสผ่านเข้าไป 2 ครั้ง
ตัวอย่างเช่น
htpasswd -c /home/demo/.htpasswd webmin
หากต้องการยูสเซอร์เพิ่มในไฟล์ .htpasswd ให้ใช้คำสั่งต่อไปนี้
htpasswd /home/[domainname]/.htpasswd [username2]
ไม่ต้องมีออปชั่น -c ในบรรทัดคำสั่งเพราะไม่ต้องสร้างไฟล์ใหม่ขึ้นมา
ถ้าไม่มี Shell ให้ใช้งานให้ไปที่ http://www.euronet.nl/~arnow/htpasswd/ กรอกชื่อยูสเซอร์และรหัสผ่านเข้าไป 2 ครั้งพร้อมกดปุ่มจะได้ ชื่อยูสเซอร์:รหัสผ่านที่เข้ารหัสเรียบร้อย ให้คัดลอกไปสร้างเท็กซ์ไฟล์ชื่อ .htpasswd พร้อมอัปโหลดไปไว้ในไดเรกทอรี่ชื่อ /home/demo
ตัวอย่างเช่น
webmin:09/LuWEnVExOw
จากนั่นสร้างไฟล์ .htaccess ขึ้นมาโดยมีโครงสร้างดังนี้
AuthUserFile /home/[domainname]/.htpasswd
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic
require user [username]
ตัวอย่างเช่น
AuthUserFile /home/demo/.htpasswd
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic
require user webmin
อัปโหลดไฟล์ .htaccess ไปไว้ในไดเรกทอรี่ที่ต้องการป้องกันการเข้าถึงเมื่อเรียกหน้าเวบเพจในไดเรกทอรี่ดังกล่าว เวบเซิร์ฟเวอร์จะได้ตรวจสอบไฟล์ .htaccess จะนำค่าคอนฟิกในไฟล์มาใช้งาน
จะเห็นได้ว่าคุณจะปกป้องไดเรกทอรี่อื่นเพิ่มเติม เพียงคุณเพียงอับโหลดไฟล์ .htaccess ไปไว้ในไดเรกทอรี่ที่ต้องการโดยไม่ต้องสร้างยูสเซอร์ใหม่ขึ้นมา เพราะใช้ยูสเซอร์เดียวกันที่อยูในไฟล์ .htpasswd นั่นเอง
จะเห็นได้ว่าถ้าใช้ Apache ในระบบปฏิบัติการยูนิกซ์หรือลีนุกซ์จะปรับแต่งได้ต้องความต้องการใช้งานของคุณได้ แม้จะปรับได้เพียงเล็กน้อยแต่ก็สามารถทำได้ คำแนะนำต่างข้างบนอาจจะไม่สามารถทำได้ในบ้างเวบโฮสต์ติ้งดังนั้นต้องทดสอบด้วยตนเองเพราะค่าคอนฟิกนั่นอาจจะถูกการ Diable เอาไว้ในไฟล์ httpd.conf แต่ส่วนใหญ่จะทำได้เกือบ 90 % หรือบ้างครั้งอาจจะใช้ค่าคอนฟฟิกที่เพี้ยนไปจากที่แนะนำไปเล็กน้อยขอให้ติดต่อผู้ดูแลระบบอีกครั้ง
เขียนโดย : GuruDD.com
ปล. บันทึกช่วยจำ