แสดงบทความที่มีป้ายกำกับ htaccess แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ htaccess แสดงบทความทั้งหมด

1/22/2557

Mod Rewrite Syntax การเขียน .htaccess อย่างง่ายช่วยย่อ url ที่ยาวให้สั้นลงและมีผลต่อการทำ seo



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

การตั้งค่า Appserv ให้สามารถใช้งาน htaccess rewrite ได้


ตัวอย่างเว็บที่ทำ Mod Rewirte .htaccess
http://www.koratnews.com
http://www.cho-gallery.com/

การตั้งค่า Appserv ให้สามารถใช้งาน htaccess rewrite ได้ (Mod Rewrite ใน Appserv ที่ลงกันบน Windows)

Mod Rewrite ใน Appserv ที่ลงกันบน Windows หรือที่ส่วนใหญ่ลงกันในเครื่องคอมพิวเตอร์ของเราเอง เพื่อทดสอบเว็บ หรือทำเว็บต้นแบบครับ

โดย ปกติตัว Mod Rewrite ของ Appserv จะ ไม่ได้เปิดไว้โดย Default เราต้องไปเปิดเองครับ ผมมีวิธีง่าย ๆ จะอธิบายด้วยภาพด้านล่างนี้ครับ สำหรับเพื่อน ๆ ที่ยังทำไม่ได้หรือยังไม่เคยทำหรือกำลังคิดจะทำ จะได้ดูเป็นตัวอย่างครับ มาเริ่มกันเลย


1. เพื่อน ๆ ลง Appserv กันทุกคนแล้วนะครับ

2. เข้าเมนู Start -> Program -> AppServ -> Configuration Server -> Apache Edit the httpd.conf Configuration File
3. เมื่อเลือกเข้าไปแล้ว โปรแกรมจะเปิดไฟล์ httd.conf ให้เราครับ ส่วนใหญ่จะเปิดด้วย notepad (ซึ่งน่าจะมีทุกเครื่องแล้ว)
4. จากนั้น ให้ค้นหา (Ctrl +F) คำว่า LoadModule rewrite_module modules/mod_rewrite.so

5. เมื่อพบสังเกตว่า หน้าคำว่า LoadModule rewrite_module modules/mod_rewrite.so จะมี # นำหน้าอยู่

6. ให้ลบ # ทิ้งครับ แล้ว Restart Apache ใหม่ ก็สามารถใช้งานได้แล้วครับ

วิธีการเขียนคำสั่ง
Mod Rewrite Syntax การเขียน .htaccess อย่างง่ายช่วยย่อ url

วิธีการง่าย ๆ เอามาบอกต่อกันครับ ขอให้สนุำกกับการทำเว็บด้วย Mod Rewrite (.htaccess) นะครับ