htaccess คือ
Server จำนวนมาก (โดยปกติแล้วมักจะเป็น Apache server) ไฟล์ .htaccess (hypertext access) คือชื่อตั้งต้นของไฟล์ที่ใช้ควบคุมสิทธิของไดเร็กทอรี่ซึ่งสามารถกำหนดให้แตกต่างกันได้ในแต่ละไดเร็คทอรี่. การใช้งานไฟล์ .htaccess สามารถทำได้ด้วยการสร้างไฟล์ .htaccess และไปวางในไดเร็คทอรี่ที่ต้องการ. ซึ่งสามารถควบคุมสิทธิต่าง ๆ ได้นอกเหนือจากสิทธิที่ถูกกำหนดโดย server. .htaccess สามารถกำหนดรหัสผ่านสำหรับเข้าถึงไดเร็คทอรี่ได้รวมรวมถึงเขียนทับค่าต่าง ๆ ที่ถูกกำหนดโดย server ได้ เช่น ประเภทของเนื้อหา, character set, การจัดการไฟล์ CGI เป็นต้น
วิธีเขียน & ใช้งาน .htaccess
ปัญหาอย่างหนึ่ง ของผู้ทำเว็บคือ ทดสอบในเครื่องตัวเองแล้วปกติดี พออัพขึ้น hosting ไม่่ว่าจะเป็นแบบธรรมดา หรือพวก virtual host แล้วทำไมถึงไม่เหมือนในเครื่อง นั่นเป็นเพราะ Server แต่ละเจ้าเค้า Config (กำหนดค่า) ไว้ไม่เหมือนกับเครื่องเรา(ไม่ได้กำหนดอะไรเลย) ทั้งนี้เหตุผลเนื่องจากความปลอดภัยของตัว host และผู้ใช้บริการครับ ถ้ายอมเปิดให้ใช้งานทุกอย่างทุกฟังก์ชั่น ย่อมไม่เป็นผลดีแน่นอน
ตัวอย่างที่เห็นชัดๆ เวลาติดตั้งระบบ CMS พวก joomla หรือ mambo ระบบจะให้เซตค่า register global = off ซึ่งมันต้องไปปรับใน php.ini ถ้าเราไม่ใช่เจ้าของ host ก็คงจัดการลำบากครับ หรือบางทีเราไปเช่า host ต่างประเทศ เค้าเซต default char set เป็น charset=iso-8859-2 หรือ อื่นๆ ทำให้เราไม่สามารถแสดงผลภาษาไทยได้ครับ อ่ะทีนี้เรามาดูวิธีการกันเลยดีกว่า
*** วิธีดูว่าตอนนี้ host เรา set อะไรไว้บ้าง
1. ให้สร้างไฟล์ .php ขึ้นมาครับ
2. ข้างในไฟล์ให้พิมพ์ <?php phpinfo(); ?>
3. เซฟแล้วนำไฟล์ ไปอัพใส่ host เรา แล้วเรียกไฟล์ครับ ก็จะเห็นว่า host เรา Config ไว้อย่างไร
เช่่น ไฟล์นี้ผมชื่อ config.php เวลาเรียก http://www.ชื่อโดเมนของคุณ.com/config.php ครับ

หน้าตาของ phpinfo
การกำหนดค่าใน php.ini โดยใช้ .htaccess
รูปแบบ1 : php_flag “ชื่อค่าที่ต้องการจะเปลี่ยน“ “ค่าที่ต้องการเปลี่ยน”
รูปแบบที่2 : php_value “ชื่อค่าที่ต้องการเปลี่ยน” “ค่าที่ต้องการเปลี่ยน”
การที่จะใช้แบบไหนนั้นขึ้นอยู่กับ ตัวที่เราต้องการจะ Config ครับ แต่โดยส่วนมากแล้ว ตัวไหนที่มีแค่ค่า on , off จะใช้ php_flag และ หากอะไรที่ต้องมีการกำหนดค่าก็ใช้เป็น php_value แต่ก็มีอย่างอื่นด้วยนะครับแต่เดี๋ยวจะค่อยๆอธิบายไปแล้วกัน
ตัวอย่างที่1 : ปรับค่า register globals (ให้เป็น off)
1. เปิดไฟล์ htaccess.txt ที่เราได้ทำการสร้างไว้ในหัวข้อที่ผ่านมา
2. พิมพ์คำว่า php_flag register_globals off
3. เซฟแล้วก็นำไปอัพไว้บนโอสต์ครับ
4. แก้ไขชื่อให้เป็น .htaccess แค่นี้ก็เรียบร้อยแล้วครับ
การเปลี่ยน register globals

จากตัวอย่างเป็นการปิด register_globals หากใครอยากเปิดใช้งาน สามารถเปลี่ยนจาก off เป็น on หรือ จะใช้ 0,1 แทนก็ได้ครับ 0=ปิด , 1=เปิด
เช่น php_flag register_globals 1
———————————————————————————————
ตัวอย่างที่2 : บางครั้งเราเช่า host นอก Default timezone เป็นเวลาของต่างประเทศ หากเราจะให้ทาง host เค้าปรับเวลาเป็นประเทศไทย เพื่อเราคนเดียวก็คงจะไม่ได้น่ะครับ เลยต้องใช้ .htacess เข้าช่วย
1. เปิดไฟล์ htaccess.txt ที่สร้างไว้
2. พิมพ์คำว่า php_value date.timezone asia/bangkok
3. บันทึก แล้วอัพขึ้น host
4. แก้ไขชื่อเป็น .htaccess

การปรับ default timezone
เท่านี้ก็เรียบร้อยครับ จะได้เวลา default time zone เป็นบ้านเราแล้ว!!!
———————————————————————————–
บางท่านเกิดสงสัยเอ๊ะ!!! หากต้องการจะกำหนดหลายๆค่าล่ะ จะำทำยังไง? ก็ไม่ยากครับ แค่ Enter เว้นบรรทัดแต่ละคำสั่ง

การ Config หลายๆค่า
ตัวอย่างที่ 3 : เติม www ให้กับ url
โดยส่วนมากแล้ว เวลาเราพิมพ์ url ก็พิมพ์กันสั้นๆเช่น google.com ไม่ค่อยมีใครพิมพ์ www.google.com ในตัวอย่างนี้เราจะทำการเติม www ไปข้างหน้า url ให้โดยอัตโนมัติโดยใช้ .htacess
ขั้นที่ 1. เปิดไฟล์มาเหมือนเดิม
ขั้นที่ 2. ใส่ Code นี้ลงไป
view sourceprint?
1 # Rewrite to www.
2 Options +FollowSymLinks
3 RewriteEngine On
4 RewriteBase /
5 RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
6 RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
ขั้นตอนที่ 4. แก้ไขตรง domain ให้เป็นชื่อเว็บของคุณ และ ถ้าคุณใช้ .org ก็แก้เป็น .org
เพียงเท่านี้เวลาใครพิมพ์มาสั้นๆ ตัว .htaccess ก็จะ เติม www ให้เราเองครับ
------------------------------------
การใช้ ประโยชน์ ของ .htaccess เช่น block IP Blocking bad bots ป้องกันการ Hot link
ไฟล์ .htaccess นั้นเป็นไฟล์ที่ใช้ในการ override configuration ของ Apache
ซึ่งมีการใช้คำจำกัดความในภาษาอังกฤษว่า "Distributed Configuration File" โดยการทำงานจะเป็นการ configuration ของแต่ละ directory ทั้งหมดนี้ใน configuation file หลักจะต้องมีการ set AllowOverride ด้วยนะครับ
มาดูการใช้งานกันครับ
Authentication เราสามารถทำการ Authentication สำหรับ user ได้โดยการใช้ไฟล์ .htaccess ดังนี้ครับ
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
โดยจะต้องมีการสร้างไฟล์ password ไว้ด้วยเพื่อเก็บรายชื่อของ user ครับ
Server-side include เป็นการสั่งให้ Apache ทำการ parse ค่าเอกสารโดยใช้ Server-side include ครับ ทำได้โดย
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
เป็นการสั่งให้ Apache รู้จักเอกสาร .shtml เมื่อมีการเรียกร้องขอไฟล์ .shtml จะเป็นการทำงานโดยใช้ Server-Side include
CGI Handler เป็นการสั่งให้ Apache ทำการ execute ไฟล์ CGI สามารถทำได้โดย
Options +ExecCGI
AddHandler cgi-script cgi pl
หรือในอีกแบบ เป็นการสั่งให้ทุกไฟล์ใน directory นั้นทำงานในลักษณะ CGI script
Options +ExecCGI
SetHandler cgi-script
Error document เป็นการสั่งให้ Apache ใช้งาน error document ตามรูปแบบของเรา สามารถทำได้โดย
ErrorDocument code /directory/filename.ext
เช่น ถ้าต้องการทำการแสดง error ในแบบของเราสำหรับ error code 404 (Not found) ทำได้โดย
ErrorDocument 404 /errors/notfound.html
เมื่อมีการเรียกเอกสารที่ไม่มีใน directory นี้ Apache จะทำการแสดงเอกสาร notfound.html
โดยรหัส error ของ HTTP Server หลักๆนั้น มีดังนี้
400 Bad request
401 Authorization required
403 Forbidden
404 Not found
405 Method not allowed
408 Requested timed out
409 Conflicting request
410 Gone
500 Internal Server Error
501 Not Implement
502 Bad Gateway
503 Service Unavailable
Blocking by IP เป็นการสั่งให้ Apache ทำการ block ผู้ใช้งานจาก IP ที่ระบุ สามารถทำได้โดย
order allow,denydeny from 123.45.6.7deny from 012.34.5.allow from allจากตัวอย่างจะเป็นการ block จาก IP 123.45.6.7 และ IP ที่ขึ้นต้นด้วย 012.34.5 ทั้งหมด
Blocking user/site by referrer เป็นการสั่งให้ Apache ทำการ block ผู้ใช้งานที่มีการลิงค์มาจากเว็บที่ระบุ สามารถทำได้โดย
RewriteEngine on# Options +FollowSymlinksRewriteCond %{HTTP_REFERER} badsite.com [NC]RewriteCond %{HTTP_REFERER} anotherbadsite.comRewriteRule .* - [F]
จากตัวอย่างเป็นการ block ผู้ใช้ที่การ referrer จาก badsite.com และ anotherbadsite.com โดย [NC,OR] NC เป็นการบอกว่าให้เปรียบเทียบแบบ case insensitive และ OR หมายถึง referrer ที่มาจาก domain นั้นทั้งหมด โดย Apache จะใช้การเปรียบเทียบโดย Regular Expressions ซึ่ง "." ก็หมายถึง "." ตามมาตรฐานของ Regular Expressions เมื่อมีการร้องของจาก referrer ดังที่ระบุ Apache จะส่ง header 403 Forbidden ไปยัง Client
Blocking bad bots เป็นการสั่ง Apache ให้ block bots หรือโปรแกรมดูดเว็บต่างๆ สามารถทำได้โดย
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download Demon [OR]
.......
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]
จากตัวอย่างเป็นแค่เพียงส่วนหนึ่งเท่านั้นครับ โดยการ block bots หรือโปรแกรมดูดเว็บนั้นจะช่วยลดแบนด์วดธ์ที่ไม่มีประโยชน์ลงได้เยอะเลยครับ
Default page เป็นการสั่งให้ Apache ทำการ index default ไฟล์ตามที่ต้องการครับ โดยปกติแล้วจะเป็น index.html index.php เราอาจจะเปลี่ยนให้เป็น myfile.html ก็ได้ครับ สามารถทำได้โดย
DirectoryIndex myfile.html
Redirect เป็นการสั่งให้ redirect ไปยังหน้าเพจที่เราต้องการเมื่อมีการเรียกไฟล์หรือ directory ที่ระบุไว้ สามารถทำได้โดย
Redirect /olddirectory http://modoeye.com/newdirectory/
ป้องกันการเปิดไฟล์ ถ้าเราไช้ไฟล์ในการเก็บ password เราสามารถป้องกันการร้องขอเอกสารนั้นๆได้โดย
order allow,deny
deny from all
เมื่อมีการร้องขอไฟล์ชื่อ password Apache จะมีการส่ง header 403 Forbidden ไปยัง client
การเพิ่ม MIME types เป็นการสั่งให้ Apache รู้จักไฟล์ชนิดที่เราระบุเพื่อจะได้มีการส่ง header ที่ถูกต้องไปยัง client สามารถทำได้โดย
AddType application/x-shockwave-flash swf
ป้องกันการ Hot link เป็นการสั่งให้ Apache ทำการป้องกัน การเรียกใช้ไฟล์ที่ไม่ใช้ไฟล์ที่เราต้องการโดยตรง เช่น cascading style sheet, Javascript หรือไฟล์ที่เป็นความลับอื่นๆได้ โดย
RewriteEngine onRewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www.)?modoeye.com.com/.*$ [NC]RewriteRule .(css|js|gif|jpg)$ http://www.modoeye.com/hotlink.gif [R,L]
จากตัวอย่าง เป็นการป้องกันการเรีกใช้ไฟล์ .css, .js, .gif, .jpg โดยตรงที่ไม่ได้มาจาก modoeye.com และเมื่อมีการ hotlink จะมีการแสดง hotlink.gif แทน
ป้องกัน Directory listing เป็นการสั่งให้ Apache ทำการป้องการ listing ไฟล์ที่อยู่ใน directory นั้น (ในกรณีที่ใน directory นั้นไม่มีไฟล์ index และ main configuration file ทำการเปิด directory listing ไว้) เมื่อมีการเรียกมายัง directory นั้นๆปกติ Apache จะทำการ list ไฟล์ทั้งหมดออกมาแสดงผล ซึ่งเป็นการไม่ดีแน่ถ้าข้อมูลนั้นเป็นรูปหรือไฟล์สำคัญๆ เราสามารถทำการป้องกันได้โดย
IndexIgnore *หรือOptions -IndexesIndexIgnore *.gif *.jpg
จากตัวอย่างที่ 1 และ 2 นั้นเป็นการสั่งให้ Apache ไม่ทำการ list ไฟล์ใดๆทั้งสิ้น ส่วนตัวอย่างล่างสุดนั้นเป็นการสั่งให้ Apache ไม่ทำการ list เฉพาะไฟล์ .gif และ .jpg เท่านั้น
ทั้งหมดนั้นเป็นการใช้งาน .htaccess สำหรับ Apache ซึ่งสามารถนำไปประยุกต์ใช้กับ เว็บของท่านได้ตามต้องการครับ
----------------------------
เนื่องจากลูกค้าที่ใช้งาน webhosting เค้าต้องการให้คนเข้าเว็บไซต์แล้ว URL เป็นแบบที่ขึ้นต้น
ด้วย www. อย่างเดียวไม่ว่าจะเข้าเป็นแบบ มี www. หรือไม่มี www. ก็ต้องให้โชว์ url เป็น
แบบมี www. ตลอดเลยต้องจัดให้ลูกค้าหน่อยครับ
ไม่ยากเลยครับ พอลูกค้าใช้งานบน Apache เลยทำให้สมใจอยากด้วยการใช้ .htaccess
ใส่โค้ดลงไปใน .htaccess ดังนี้ครับ
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.engiblog\.com [NC]
RewriteRule ^(.*)$ http://www.engiblog.com/$1 [L,R=301]
</IfModule>
และแล้วลูกค้าก็ได้ดั่งใจที่ต้องการครับ
----------------------------------------
สร้างไฟล์ .htaccessบนวินโดว์ส
หลังจากใช้ Apache มานานเลยอยากลองเขียน Mod rewrite เล่นดูเลยจำเป็นต้องสร้างไฟล์ .htaccess
แต่เนื่องจากข้อบังคับของชื่อไฟล์ที่สามารถสร้างได้บนวินโดว์สนั้นมีข้อจำกัด ไม่ให้มี .(dot) อยู่หน้าสุดของชื่อ
จึงทำให้ไม่สามารถสร้างไฟล์ที่ชื่อ .htaccess ได้ แต่ไม่ใช่เรื่องยากถ้าจะทำ
วิธีง่ายๆ คือ
เขียนโค้ดอะไรให้เรียบร้อยใน Notepad แล้วเวลาจะ save file ก็ให้เลือก file type เป็น All file
และตรงชื่อไฟล์ก็ตั้งใส่ลงไปว่า
“.htaccess”
แจ่มไหมล่ะครับ
---------------------------------
เช่น ต้องการ เปลี่ยน register_globals จากค่า เดิม เป็น off ของ php ตั้งแต่เวอร์ชั่น 4.3 เป็น ต้นมา
ไฟล์
.htaccess
php_flag register_globals on
ส่วนด้านล่างนี้ เพิ่ม ขนาดไฟล์ ให้ สามารถ post และ upload ได้ ขนาดใหญ่ขึ้น
php_value post_max_size 46384000
php_value upload_max_filesize 46384000
ตาม 2 ตัว อย่าง สรุป รูปแบบ คือ
ขึ้นด้วย php_value
ตามด้วย ชื่อ config ที่ต้องการเปลี่ยน
ตามด้วย ค่าที่ต้องการกำหนดใหม่
ลองเอาไปใช้ดูนะครับ หากใช้แล้วเกิดปัญหาก็โทรมาปรึกษาเราได้ในเวลาราชการ ตามเบอร์โทรที่ให้ไว้ ใน hotline
ขอขอบคุณ kunkroo.com คุณครู.คอม