มหัศจรรย์ไฟล์ .htaccess ใน Apache  
 
 
::: หน้าแรก :::
::: ASP & ASP.NET :::
::: MySQL :::
::: PHP :::
::: Reviews :::
::: Web Server :::
::: my Book :::
ขณะนี้มียูสเซอร์ออนไลน์ คน
IP : 38.107.191.96
รอบวันนี้ 23 เพจวิว
รอบสัปดาห์นี้ 204 เพจวิว
รอบเดือนนี้ 204 เพจวิว
รอบปีนี้ 14,558 เพจวิว

WWW GuruDD.com



PHP Pear
Pecl Smarty
หน้าแรก > Web Server > Apache

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

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

เมื่อคุณอัปโหลดไฟล์ .htaccess ขึ้นไปด้วยโปรแกรม CuteFTP หรือ WS_FTP นั่นจะพบว่า จะไม่สามารถมองเห็นได้เพราะตามหลักของระบบไฟล์บนระบบปฏิบัติการตระกูลยูนิกส์/ลีนุกซ์นั่นจะถือว่าไฟล์ที่ขึ้นต้นด้วยจุด (.) นำหน้าจะถือว่าเป็นไฟล์ที่ซ่อนไว้ไม่ให้มองเห็นได้ ทำให้บางคนนึกว่ายังไม่ได้อัปโหลดขึ้นไปที

ไฟล์ .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 (Server Side Includes)

    บางเวบเซิร์ฟเวอร์ที่ใช้ Apache นั่นไม่ได้ตั้งค่าให้ใช้ความสามารถ SSI ที่จะใช้การสร้างเวบเพจร่วมกับเวบเซิร์ฟเวอร์ วิธีการนี้เมื่อก่อนเป็นที่นิยมสมัยที่ 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
เขียนเมื่อ : 19 มี.ค. 47

ถามปัญหาเพิ่มเติมได้ที่ :http://www.gurudd.com/phpbb2/viewtopic.php?t=10

  • เซต PHP บน Apache (Win32) ( Hits: 5133)
    ขั้นตอนเซตอัพ PHP บน Apache (Win32) ทั้งเวอร์ขั่น 1.3.xx และ 2.0.xx
  • การติดตั้ง Apache บน Windows ( Hits: 10661)
    เรียนรู้การเซตอัพโปรแกรมเวบเซิร์ฟเวอร์ Apache บนระบบปฏิบัติการ Windows ด้วยตัวคุณเอง
 
ใช้เวลาประมวลทั้งหมด 0.159226894379 วินาที
Copyright by GuruDD.com © 2003-2004
GuruDD Script Version 1.00 Build 20040323

Power by 108WEB.COM