เทคนิคนี้เป็นผลพลอยได้จากการเขียน Scriptdd ตัวใหม่นี่แหล่ะครับ
ด้วยความที่ ตัวเก่านั้นมีอายุหลายปีแล้ว ทำให้อะไรหลายๆอย่างดูเก่าตามไปด้วย
การทำ Easy URL นั้นเป็นเทคนิคอย่างหนึ่งที่ช่วยให้ URL ของเรา สวยงามและ
สื่อความหมายให้กับผู้ใช้โดยเฉพาะ Search Engine ต่างๆแล้วจะชอบมาก
แบบดั่งเดิม
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 ด้วย
พระเอกของเรานั้นคือ 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 ครับ
สำหรับ สาวก 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 กันได้แล้วครับ เย้
ผมจึงเพิ่ม 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 ได้แล้วครับ
----
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 อ้างอิงเอาไว้ให้ลองไปศึกษากันดู
บทความนี้ก็ขอจบแค่นี้แหล่ะครับ
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
ด้วยความที่ ตัวเก่านั้นมีอายุหลายปีแล้ว ทำให้อะไรหลายๆอย่างดูเก่าตามไปด้วย
การทำ 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