3/19/2555

Apache Mod Rewrite เพื่อทำ Easy URL

เทคนิคนี้เป็นผลพลอยได้จากการเขียน Scriptdd ตัวใหม่นี่แหล่ะครับ
ด้วยความที่ ตัวเก่านั้นมีอายุหลายปีแล้ว ทำให้อะไรหลายๆอย่างดูเก่าตามไปด้วย

การทำ Easy URL นั้นเป็นเทคนิคอย่างหนึ่งที่ช่วยให้ URL ของเรา สวยงามและ
สื่อความหมายให้กับผู้ใช้โดยเฉพาะ Search Engine ต่างๆแล้วจะชอบมาก


เพราะอะไร ?

ผมขอยกตัวอย่างง่ายๆ เช่น URL นี้

แบบดั่งเดิม
http://www.unlimitpc.com/modules.php?name=Article&pa=showpage&pid=295

ถ้าเปลี่ยนใหม่เป็น
http://www.unlimitpc.com/Article/showpage/295.html

หรือ
http://www.unlimitpc.com/Article/POV-GF8500GT.html

3 URL นี้ถ้าเป็นคุณ คุณจะคลิกอันไหนครับ ? หรือพอเดาได้ไหมครับ
ว่า URL นี้เป็นเนื้อหาเกี่ยวกับอะไร ??

นี่แหล่ะครับการทำ Easy URL ซึ่งนอกจากจะทำให้ผู้ใช้สนใจจะคลิก Link แล้ว
ยังสามารถช่วยเพิ่มความน่าสนใจให้กับ Search Engine ได้ด้วย

เนื่องจากการทำ SEO (Search Engine Optimization) ก็มีการพิจารณาชื่อ URL
ในการทำ Index ของ Keyword ด้วย


แล้วทำยังไง ?

สำหรับ Apache แล้วนั้นเรียกได้ว่า หมูมากเพราะถูกออกแบบมาสำหรับเรื่องนี้โดยเฉพาะ

พระเอกของเรานั้นคือ Mod Rewrite ครับ

Mod Rewrite เป็นโมดูลที่เพิ่มเติมสำหรับ Apache ให้สามารถทำงานลักษณะแสดงเนื้อหา
(จาก php หรือ pl หรือ html ต่างๆ) ลงบน URL ที่กำหนดไว้ในเงื่อนไขได้

เช่น

การที่เราเห็น URL ว่า
http://www.songburi.com/interview/petch_album_lets_talk_about_love_1.html

ความจริงแล้วระบบภายในอาจจะเรียกเป็น
http://www.songburi.com/interview/index.php?id=petch_album_lets_talk_about_love_1

ซึ่งทั้งหมดอยู่ที่การ Config Mod Rewrite นั้นแหล่ะครับ

(ไม่ต้องแปลกใจแอบ Promote Web ให้เพื่อนซะงั้น :P)

ฉะนั้นจากที่ผมกล่าวมาการทำ Easy URL ด้วย Mod Rewrite ต้องทำตั้งแต่การออกแบบ Script ในฝั่ง
เนื้อหาให้สัมพันธ์กับการ Config Mod Rewrite ครับ

ว่าแล้วมาเริ่มกันที่การ Config Mod Rewrite ก่อนครับ

1. ตรวจสอบก่อนว่า Server มี Mod Rewrite หรือเปล่า
สำหรับ สาวก Apache เท่านั้น ลองเขียน php ขึ้นมา File นึงครับ

phpinfo();
?>


แล้ว Upload ขึ้นไปบน Server ลองดูจาก phpinfo ว่ามี Mod Rewrite ใน Server หรือเปล่า
จากรูปจะเห็นว่า php ตรวจสอบแล้วว่า Apache ได้ติดตั้ง mod rewrite เอาไว้
แบบนี้ก็มีโอกาสใช้ได้ 50% แล้วครับ ^^

2. ต่อไป ให้ลอง Download Script ตรวจสอบนี้ (คลิกที่นี่) ไป ติดตั้ง มีอยู่ 2 File น่ะครับ
.htaccess คือ File config mod rewrite และ index.php เป็นตัวอย่างการเรียก URL

ที่ Server ของคุณ เอาไว้ใน /rewrite/ นะครับ แล้วลองเรียก URL ว่า

/rewrite/test_rewrite.html  (เปลี่ยนคำว่า test_rewrite เป็นคำที่คุณต้องการตามสะดวก)


ถ้าขึ้นตามรูปแสดงว่า Server ของคุณพร้อมใช้งาน Mod Rewrite แล้วล่ะครับ ^^


3. ถ้าลองตามข้อ 2 แล้วไม่สามารถใช้งานได้กรุณาแจ้ง Admin ครับ ให้เพิ่ม ใน httpd.conf
ว่า ให้ AllowOverride All ใน Home Path ของ Website ของคุณ


การ AllowOverride All คือการยอมรับการเรียก .htaccess จาก folder ใดๆก็ได้ครับ


ถ้าทุกอย่างเรียบร้อยคุณก็จะสามารถแปลงร่างเล่น Easy URL กันได้แล้วครับ เย้

แิอบโฆษณา

พี่ต่อสะกิดมาฝากข่าวโฆษณาครับ www.siamhosting.com Server ทุกตัว รองรับ Mod Rewrite ครับ ^^!

เริ่มออกแบบส่วน PHP เพื่อปรับการเรียกใช้

เนื่องจาก Script เดิมที่ผมเคยเขียนไว้ ในการเรียกเนื้อหาข้อมูลโดยใช้ id แทนฉะนั้น
ผมจึงเพิ่ม Field ขึ้นมา 1 ช่องเพื่อเก็บชื่อ Easy URL ที่เราต้องการเอาไว้


เสร็จแล้วผมจึงเปลี่ยน Script จากการเรียก id เป็นเรียก Easy URL แทน ดังนี้

   Script วิธีเรียกแบบเดิม
   content_detail.php?id=1234

   แก้ใหม่
   content_detail.php?path_url=easy_url_55555
 
เท่านี้ Script เดิมก็สามารถเรียกใช้งานแบบ Easy URL ได้แล้วครับ

เขียน .htaccess เพื่อรับกับส่วน PHP

จากที่เห็นผมจึงแก้ไข .htaccess ใหม่ดังนี้

----
RewriteEngine On
RewriteBase /content/

RewriteRule ^(.*).html content_detail.php?path_url=$1
-----



จาก .htaccess ฉะนั้นสรุปได้ว่า Easy URL ใหม่ที่จะเกิดขึ้นก็คือ

http://www.yourdomain.com/content/my_easy_url_if_i_want.html


กระบวนการของ URL ดังกล่าวนี้คือ
เมื่อมีการเรียก URL ที่อยู่ภายใต้ /content/ เข้ามา Apache จะตรวจสอบว่า
ถ้ามี Filename ใดๆ .html เข้ามา Apache จะส่ง Filename นั้นๆ ไปให้กับ
PHP ชื่อว่า content_detail.php?path_url=ชื่อ filename นั้นๆ นั้นเอง

ซึ่งการเขียน .htaccss นี้สามารถเขียนหลายๆ เงื่อนไขเข้าไปได้เช่น

----
RewriteEngine On
RewriteBase /content/

RewriteRule ^(.*).html content_detail.php?path_url=$1
RewriteRule ^page-(.*).html index.php?p=$1
-----


กรณีที่ เนื้อหามีหลายหน้า ปกติเราจะส่งข้อมูลเป็น index.php?p=2 ไป
แต่ผมเปลี่ยนใหม่ให้เรียกเป็น page-2.html แทนครับ


ทั้งหมดที่กล่าวมาเป็นเทคนิคแค่เบื้องต้นและ สรุปให้ดูง่ายที่สุด
ใครอ่านไม่รู้เรื่องลองอ่านซ้ำหลายๆรอบ น่ะครับ

ถ้าหากใครต้องการเทคนิคสูงๆ ผมก็ขอทิ้ง Link อ้างอิงเอาไว้ให้ลองไปศึกษากันดู
บทความนี้ก็ขอจบแค่นี้แหล่ะครับ

อ้างอิง

ต้นน้ำที่ผมเริ่มหาข้อมูลจากคุณ bomber ครับ
http://www.narisa.com/blog/bomber/index.php?showentry=133

เทคนิคหลายๆแบบของการเขียน Mod Rewrite
http://corz.org/serv/tricks/htaccess2.php
http://www.sitepoint.com/article/guide-url-rewriting
http://forums.searchenginewatch.com/showthread.php?t=3925
http://www.modrewrite.com/

อันนี้สรุปทั้งหมด Print ออกมาแปะฝาบ้านได้เลยครับ
http://www.ilovejackdaniels.com/apache/mod_rewrite-cheat-sheet/

สำหรับคนที่ใช้ IIS ของ Microsoft ลองดูที่ Link นี้นะครับ
สามารถใช้ ModRewrite ได้เหมือนกัน


http://www.scriptdd.com/webtip/apache-mod-rewrite-easy-url.html

0 ความคิดเห็น:

แสดงความคิดเห็น