ModRewriteSyntaxการเขียน.htaccess
Mod Rewrite จะเป็นการเขียนคำสั่ง ให้ลิงค์เว็บไซต์ หรือ URL ให้สั้นลงดูแล้วสะอาดตา ช่วยในการ ทำ SEO ได้ดีขึ้น เพราะ Google มันจะชอบลิงค์สั้นอ่านแล้วเข้าใจง่ายมีความหมาย (อันนี้อ่านเจอจากเว็บต่างประเทศ) Mod Rewrite มันก็จะช่วยซ่อน URL ที่ยาวและมั่วให้อยู่ในรูปแบบ URL ที่สั้นและสวยงามมีความหมาย
คำสั่ง Mod Rewrite ที่เขียนนั้นจะต้องบันทึกเป็นไฟล์ .htaccess ไว้ใน Directory ของเว็บไซต์ ซึ่ง Syntax Mod Rewrite หรือคำสั่งที่ใช้ในการเขียนก็ตั้งแต่ Basic จนถึง Advance ตอนนี้เราก็มาดูคำสั่งแบบ Basic ที่ใช้กันส่วนมากกันก่อนครับ
การที่จะให้งานคำสั่ง Mod Rewrite ได้นั้นจะต้องตั้งค่า httpd.conf Mod Rewrite ใน Appserv ก่อนนะครับ แล้ว การเขียนคำสั่งใน Appserv กับ IIS จะไม่เหมือนกันนะครับ แต่คล้ายๆกัน แต่ผมจะแนะนำการเขียนใน Appserv นะครับเพราะส่วนใหญ่จะใช้ Appserv กัน
ไฟล์ .htaccess
#คำสั่งแรก RewriteEngine On เป็นคำสั่งเปิดใช้งาน mod rewirte เครื่อง # เป็นเครื่องหมายที่ใช้ในการ Comment
RewriteEngine On
#คำสั่ง RewriteBase คำสั่งให้สามารถให้งานฟังก์ชั่นของ PHP Version ต่ำกว่า Version ปัจจุบันได้ หรือสามารถอ่านคำสั่งอักขระพิเศษที่ Server ปิดการใช้งานไว้ อันนี้ตามที่ผมเข้าใจ
php_flag register_globals on
#คำสั่งเรียกที่พาสของเว็บไซต์ ถ้าไม่มีก็ไม่ต้องใส่ ถ้าเก็บไฟล์เว็บไว้ในโฟล์เดอย่อยไปอีกก็จะเขียน เช่น RewriteBase / helloworld คือเราเก็บไฟล์เว็บไว้ใน www/helloworld ถ้าไม่มีก็ใส่แค่ ส่วนใหญ่จะเป็นทดสอบใน localhost
RewriteBase
#คำสั่ง RewriteRule เป็นการกำหนดเงื่อนไขที่จะทำการแปลง URL เช่น
RewriteRule
ส่งค่าตัวแปรเดียว
#RewriteRule ^(.*)$ ?option=topic&view=detail&name1=$1
#RewriteRule ^([a-zA-Z0-9_-]+)$ ?option=topic&view=detail&name1=$1
#RewriteRule ^(.*).html$ ?option=topic&view=detail&name1=$1
ส่งค่ามากกว่า 1 ตัวแปร
#RewriteRule ^(.*)-^(.*)$ ?option=topic&view=detail&name1=$1&name2=$2
#RewriteRule ^(.*)-^(.*).html$ ?option=topic&view=detail&name1=$1&name2=$2
^(.*)$ ความหมายคือ ส่งค่าอะไรมาก็ได้
^([a-zA-Z0-9_-]+)$ ความหมายคือ ค่าที่ส่งมาได้เฉพาะค่าที่กำหนดเท่านั้น คือ 0-9 กับอักษร a-z A-Z เท่านั้น
โดยจะส่งค่าไปที่ตัวแปร $1 จะเป็น ID หรือ ชื่อหัวข้อก็ได้ เวลาจะเรียกก็อย่าง เช่น
www.example.com/rewriterule อันนี้เป็น URL Mod Rewirte
www.example.com/rewriterule.html อันนี้เป็น URL Mod Rewirte
www.example.com/?option=topic&view=detail&name=rewriterule อันนี้เป็น URL จริงที่ทำงานอยู่ภายใน
#คำสั่ง ErrorDocument 404 เป็นคำสั่งตรวจสอบไฟล์ 404 คือไม่พบไฟล์ที่ส่งมา โดยจะต้องสร้างไฟล์ 404.htnl ไว้ใน Directory ของเว็บไซต์ วิธีเขียน
ErrorDocument 404 /helloworld/404.html
สรุปไฟล์ .htaccess
RewriteEngine On
RewriteBase / hellworld
#กรณีทดสอบใน localhost ใส่พาสที่อยู่ของเว็บ RewriteBase / hellworld
RewriteRule ^(.*)$ ?option=topic&view=detail&name1=$1
#เวลาเรียก URL เช่น www.example.com/rewriterule
ErrorDocument 404 /helloworld/404.html