Jump to: navigation, Search
Poakpong.com ปกป้อง ดอมคอม Life is random

Mod_Rewrite

(( บล็อกอันนี้อาจไม่ถูกหลักวิชา เพราะเป็นการลองผิดลองถูก แล้วนำมาบันทึกไว้กันลืม ))

เนื่องจากขณะนี้มีโปรเจคด่วนสุดๆ ต้องทำ และเกี่ยวข้องกับคนจำนวนมาก (ถ้ามันพร้อมให้บริการ) เลยต้องออกแบบข้อมูลรองรับเอาไว้

จุดหนึ่งที่กำลังคิดว่ามีความสำคัญ คือการใช้งาน URL ซึ่งคิดว่าโปรเจคด่วนสุดๆ นี้ มีการเรียกข้อมูลผ่าน Address Bar ในเบราเซอร์ยาวพอสมควร จึงค้นหาข้อมูลเกี่ยวกับการย่อ URL ให้สั้นลง

Mod_Rewrite จึงเข้ามาเป็นคำตอบสำหรับงานนี้

Mod_Rewrite ทำงานได้ทั้งใน Apache และ IIS ในบล็อกนี้ทดสอบบน Apache 2.0.54 วิธีการตรวจสอบว่า Server เราใช้งานได้หรือไม่คือดูใน Loaded Modules ใน phpinfo(); แต่ถ้าเปิดดูแล้วไม่มีข้อมูล สามารถนำไฟล์ไปทดสอบในเว็บได้

ดาวน์โหลดไฟล์ rewrite.zip แล้วคลาย zip ออกจากได้โฟลเดอร์ rewrite อัพโหลดเข้าไปในเซิร์ฟเวอร์ "/rewrite/" ทดลองพิมพ์ URL ใน Address Bar ดังนี้ "/rewrite/test_rewrite.html" เบราเซอร์จะแสดงผลว่าใช้ Mod_Rewrite ได้ หรือ ไม่ได้

(( เวอร์ชั่นของ Server ที่ใช้งาน Mod_Rewrite ได้คือ Apache 1.3 ขึ้นไป หรือ IIS 4 สำหรับ Windows NT Server และ IIS 5 สำหรับ Windows 2000 Server ... ในบางครั้งการใช้งาน Mod_Rewrite ไม่ได้ อาจเป็นเพราะผู้ให้บริการโฮสติ้งไม่ได้เปิด Option นี้ไว้ ต้องสอบถามสักหน่อยนะครับ ))

เอาล่ะพอใช้งาน Mod_Rewrite ได้แล้ว ก็มาทดลองใช้กันดีกว่า

หลักการทำงานของ Mod_Rewrite (ที่ผมเข้าใจคือ) ทุกครั้งที่เราพิมพ์ข้อมูลใส่ใน Address Bar ข้อมูลเหล่านั้นจะถูกนำไปเปรียบเทียบกับเงื่อนไขที่เรากำหนดไว้ในไฟล์ .htaccess แล้วทำการแปลงค่าที่ได้เป็นไปตามที่เรากำหนด

การประยุกต์ใช้ Mod_Rewrite กับ PHP (ยกตัวอย่าง PHP ละกันเพราะเขียนเป็นอย่างเดียว)

ตัวอย่าง:
ทำการย่อ URL จากเดิม /file.php?id=1234 ให้สั้นลงอีก เช่น /1234

วิธีการแก้ไขในไฟล์ .htaccess
-----
RewriteEngine On
RewriteBase /rewrite/

RewriteRule ^(.*)$ file.php?id=$1
-----

อธิบาย:
^ = บอกตำแหน่งเริ่มต้นของการเก็บข้อมูล
$ = บอกตำแหน่งสิ้นสุดการเก็บข้อมูล
( ) = คือเซ็ตตัวแปรที่เราต้องนำไปใช้ ซึ่งถ้ามีหลาย ( ) เซ็ตตัวแปรที่ได้ก็จะเป็น $1, $2, $3 ไปเรื่อยๆ
ดูเพิ่มเติมได้ที่ mod_rewrite-cheat-sheet (.pdf)

^(.*)$ สีแดง คือ URL ที่ผู้ใช้งานพิมพ์เข้ามาใน Address Bar
file.php?id=$1 สีน้ำเงิน คือ ไฟล์ที่เราเรียกมาประมวลผล แล้วแสดงกลับไปในเบราเซอร์ โดยผู้ใช้งานจะไม่รู้กระบวนการนี้ นอกจากเรากำหนดให้ทำการเปลี่ยน URL ด้วย (เพิ่ม [R] เข้าไปท้ายเงื่อนไข - ดูในเอกสาร mod_rewrite-cheat-sheet ประกอบ)

-----
RewriteRule ^(.*)$ file.php?id=$1 [R]
-----

โดยทั้งหมด ยังสามารถสร้างเงื่อนไขอื่นๆ ได้อีกมากมาย ลองศึกษากันดูนะครับ ;)

ข้อมูลอ้างอิง:
- Apache Mod Rewrite เพื่อทำ Easy URL
- การแปลง URL โดยใช้ Mod_Rewrite
- Apache Rewrite Rules
- MOD_REWRITE CHEAT SHEET
- mod_rewrite กับ ThaiCSS


Permanent Link: Poakpong's Blog [www.poakpong.com/1010]

Recent posts in "Mac Stuff"
Comments

Submitted by CityBlue on 2008-06-01 14:55:49 (IP: 203.144.160.xxx)

ได้ความรู้เยอะทีเดียว ขอบคุณมากครับ

*

*

(Optional) Hide away from publicly.

(Optional)

* (Plain text only)

(Maximum characters: 1000)
characters left.

Your IP: 38.103.63.xxx

ปกป้อง
โฆษณาออนไลน์,
โฆษณา,ออนไลน์,ลงโฆษณา,ประกาศ,online advertising,online
,advertising,โปรโมทสินค้า,โปรโมทเว็บไซต์,promote website,
seo,pay per click,ad per click,media,ค้นหาเว็บ,media,
สื่อ

To support Thai language in iPod.

Inside Poakpong.com
มีอะไรใน ปกป้อง ดอทคอม

Subscribe RSS Feed

Recent All Posts

Poakpong's Playground

Copyright Notice

POAKPONG.com,
Update to 2008.

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 License.

Technorati

Our Network:

Create in Mac OS X

SEO Stats powered by MyPagerank.Net

Search in Poakpong
ค้นหาใน ปกป้อง ดอทคอม



Advertising

เปิดเนต เปิดใจ
ปกป้องเสรีภาพของเรา
บนอินเทอร์เน็ตของเรา
(ร่วมลงชื่อในแถลงการณ์)

Web Links