Scriptdd.com

บทความบ้าบ่นของคนทำเว็บ ปี 8

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

หัวข้อ บทความ แทก Apache | PHP

เทคนิคนี้เป็นผลพลอยได้จากการเขียน 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.micronovae.com/ModRewrite/ModRewrite.html

รูปคุณ Read (63,992) Comments (28) 2007-04-29 16:43:26

ความคิดเห็น

หุหุ เขียนจากประสบการณ์นี่มันดีจริงๆ

รูปคุณ Patsonic โดยคุณ Patsonic 2007-04-30 22:44:30

ขอถามหน่อยครับ ฟรีโฮสต์บางที่เขาไม่ให้อัพ .htaccess จะทำไงดีครับ

รูปคุณ ake โดยคุณ ake 2007-04-30 23:08:13

ตอบคุณ ake แบบกำปั้นทุบดินเลยนะครับว่า

ก็อดใช้ล่ะครับ ^^

แนะนำให้ลงทุนเช่า Hosting ที่มี option นี้ดีกว่า
ปัจจุบันราคาก็ไม่ได้แพงมากแล้ว

อาจจะสังเกตง่ายๆ โดยสอบถามทาง Hosting ว่าสามารถติดตั้ง Wordpress ได้ไหม
เพราะ Wordpress ก็มีการเรียกใช้ mod_rewrite เหมือนกัน

รูปคุณ 9AuM โดยคุณ 9AuM 2007-05-02 20:25:57


http://www.servdd.com Web Hosting คุณภาพบริหารงานโดยนายอ้ำ
http://www.wp4seo.com wp4SEO ระบบช่วยบริหาร Wordpress Blog จำนวนมาก
http://www.welovetopup.com weLoveTopup เติมเงินออนไลน์ให้ส่วนลดมากที่สุดในตลาด

ผมใช้ประจำเลยอิอิ

รูปคุณ SvZ โดยคุณ SvZ 2007-05-10 00:15:16

ดีมากๆเลยครับ ผมก็อยากจะทำแบบนี้ แต่ไม่มีความรู้ด้าน server เท่าไหร่เลย คราวนี้คงลองทำตามได้บ้าง ^_^

รูปคุณ พีกับยู โดยคุณ พีกับยู 2007-05-15 02:10:28

บทความดีมากๆ ครับ คำถามพวก ทำ URL เป็บแบบ .html ทำไง
เจอมาเยอะแล้วครับ บทความนี้สมบูรณ์มากๆ ครับ ;)

รูปคุณ the DtTvB โดยคุณ the DtTvB 2007-05-17 20:29:23

ไม่ไหวหวะ เฮีย ผมยอมแพ้ สงสัยต้องให้เฮียสงเคราะห์ ซะแล้ว

รูปคุณ พร อันทะ โดยคุณ พร อันทะ 2007-05-21 03:26:53

ยัง config บน windows ไม่ได้เลยครับ

รูปคุณ อ๊อด โดยคุณ อ๊อด 2007-08-15 18:35:28

พยายามมาทั้งคืน

ไม่ได้จริงๆครับ ไม่รู้ต้องไปตั้งค่าตรงไหนอีกหรือเปล่า
ผมปรับ AllowOverride All แล้ว ก็ยังไม่เวิร์ค
ไฟล์ .htaccess ทำงานในคำสั่งนะครับ อย่างเช่นพวก DirectoryIndex
แต่กับ mod_rewrite กลับไม่ทำงานซะงั้น
ผมต้องปรับอะไรตรงไหนหรือเปล่าครับ

รูปคุณ อ๊อด โดยคุณ อ๊อด 2007-08-16 05:34:15

ลืมบอกไป
Apache 1.3.37/ Windows XP Pro / PHP 5.2.3 ครับ

รูปคุณ อ๊อด โดยคุณ อ๊อด 2007-08-16 05:35:45

ขอบคุณมากครับ เป็นบทความที่ดีมาก ๆ ครับ

รูปคุณ SS โดยคุณ SS 2007-10-26 19:26:06

ไฟล์ browserปรากฏดังนี้
The requested URL /article/Discount Car Audio=id=8 was not found on this server.

ไฟล์ .htaccess ปรากฏดังนี้
RewriteBase /

RewriteRule ^(.*).html index.php$ 1?id=$ 2
ไฟล์ index.php

เขียนดังนี้

<td colspan="2" align="left" valign="top">
<a href="<?php echo $row_rs_title['title']; ?>=id=<?php echo $row_rs_title['id']; ?>"><img src="images/ar1.gif" width="15" height="10" border="0" /><?php echo $row_rs_title['title']; ?></a></td>

ช่วยด้วยครับ
แก้มาหลายวันแล้วครับยังไม่ได้เลย

รูปคุณ marker โดยคุณ marker 2007-10-30 13:13:27

ขอบคุณครับ ไว้จะลองทำดู :)

รูปคุณ Orca โดยคุณ Orca 2007-10-30 14:04:37

แล้วสำหรับ get var มากกว่า 1 ตัวล่ะครับ จะทำได้หรือปล่าว

รูปคุณ ปันเจ โดยคุณ ปันเจ 2008-04-28 07:17:07


@PanJ on twitter

สรุปได้สุดยอดมาก คับ ผมหาอ่านมาทั่วแล้ว ทั้งของนอกของไทย

โหวตให้บทความนี้ได้อยู่ในบ้าน AF ต่อเลย ครับ ... แป่ว ...

รูปคุณ เอ โดยคุณ เอ 2008-08-08 17:21:14

ถ้าเป็นแบบนี้ล่ะครับ เป็นเว็บประกาศขายบ้าน
http://www.aaa.com/property_detail.php?ID=000673

แล้วผมจะทำให้มันขึ้นตามหัวข้อที่ใส่เข้าไปยังไงครับ อยากให้ขึ้นตาม topic ที่โพสลงไป
อยากได้แบบนี้ครับ
http://www.aaa.com/Condominium-for-rent-at-Sukhumvit-road

ทำยังไงครับ ชี้แนะด้วย

รูปคุณ อาร์ท โดยคุณ อาร์ท 2009-02-14 20:58:13

เรียนคุณ อาร์ท

กลับไปอ่านบทความนี้ตั้งแต่แรกอีกรอบ
ถ้ายังไม่เข้าใจ
กลับไปอ่านบทความนี้ตั้งแต่แรกอีกรอบ
ถ้ายังไม่เข้าใจ
กลับไปอ่านบทความนี้ตั้งแต่แรกอีกรอบ

ถ้ายังไม่เข้าใจอยู่
ปิด web นี้แล้วไปนอนซะ

รูปคุณ 9AuM โดยคุณ 9AuM 2009-02-15 00:45:04


http://www.servdd.com Web Hosting คุณภาพบริหารงานโดยนายอ้ำ
http://www.wp4seo.com wp4SEO ระบบช่วยบริหาร Wordpress Blog จำนวนมาก
http://www.welovetopup.com weLoveTopup เติมเงินออนไลน์ให้ส่วนลดมากที่สุดในตลาด

กำลังปั่น cms เดี๋ยวค่อยมาให้รบกวนพี่อั้ม scan ดูให้ครับ ขอบคุณล่วงหน้าครับ อิอิ ปล. ตัวนี้ช่วยให้ชีวิตนี้ดีขึ้นฮ่ะ

รูปคุณ P@W โดยคุณ P@W 2009-02-27 19:17:49


ทุกอย่างเกิดจากเหตุ และปัจจัย ไม่ใช่อยู่ดี ๆ ก็เกิดขึ้น :: สร้างฝันบนจินตนาการ

www.konkeanweb.com , www.prawee.com ,www.tct15.com ,www.thaiagro.com

 

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

ขอบคุณอีกครั้งครับ =w=/\

รูปคุณ Claz โดยคุณ Claz 2009-05-23 04:57:48

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

แก้ใหม่
content_detail.php?path_url=easy_url_55555

ถามหน่อยครับ
จากฟิล id แล้วมันไปดึงฟิล REWRITE_FILE_NAME แทนได้ยังงัยครับ


หรือว่า


สมมติว่า

ดาต้าเบส มี 1 ตาราง ชื่อ rewrite มี 2 ฟิล id , seo
id เก็บเลขอัตโนมัติ
seo เราเขียนตั้งชื่อเองเป็น .html เช่น test.html

ดังนั้นลิ้งค์เดิมจะเป็น
http://www.mysite/content_detal.php?id=1
คือ id จะรันตาม เลข

และตรงไฟล์ .htaccess
RewriteRule ^(.*).html content_detail.php?path_url=$1
RewriteRule ^page-(.*).html index.php?p=$1

คือมันจะหาไฟล์ที่ นามสกุล .html ใน ตารางเดียวกันกับ id ใช่ป่ะครับ





รูปคุณ ต้อง โดยคุณ ต้อง 2009-07-02 22:45:43

สวัสดีครับ

ผมอยากทราบว่าถ้าต้องการเรียก url เป็นภาษาไทยต้องไปปรับแก้ส่วนไหนเพิ่มไหมครับเพราะตอนนี้ยังเรียกจากภาษาไทยไม่ได้

รูปคุณ ป๊อป โดยคุณ ป๊อป 2009-07-09 17:58:13

ของผมเรียกดูแล้วไม่มี mod_rewrite ติดตั้งอยุ่ครั้งอยากได้วิธีติดตั้งครับ

รูปคุณ kamol โดยคุณ kamol 2009-10-15 19:42:27

555 พี่อั้มเองนิ นึกว่าใคร search มาเจอพอดี

รูปคุณ ViVi โดยคุณ ViVi 2010-02-22 01:12:05

ต้องการจ้างคุณที่เขียนบทความนี้ ให้ทำ Mode Rewrite ให้และส่วนอื่นๆบางส่วนสำหรับ SEO ในเวปครับ กรุณาติดต่อกลับ 080-1712685 หรือ newviewtour@hotmail.com ครับ

รูปคุณ ปัณณธร โดยคุณ ปัณณธร 2010-10-16 16:51:30

ถ้า Host ใช้ .htaccess หรือ ทำ mod_rewrite ไม่ได้
วิธีแก้ที่ง่ายที่สุดก็คือเขียน โปรแกรมแปลง url ขึ้นมาใช้เอง

รูปคุณ sdfsdf โดยคุณ sdfsdf 2010-11-24 13:10:18

เมื่อก่อนอ่านแล้วไม่เข้าใจ ไม่ใช่เพราะพี่อั้มเขียนไม่ดีนะ เพราะยังใหม่กะ php เดี๋ยวนี้อ่นแล้วร้อง อ๋อ ขอบคุณมาเลยครับ

รูปคุณ หนึ่ง โดยคุณ หนึ่ง 2011-04-04 17:41:54


รักษ์โลก ลดโลกร้อน | วิทยุสื่อสาร  | มอเตอร์ไซด์คลาสสิค | สติ๊กเกอร์แต่งรถยนต์

ผม งง มากครับ ดูไงก็ไม่เข้าใจ ใครรู้ แอดมาหน่อยสิครับ
งง จริง ๆ
xgreen_x@hotmail.com

รูปคุณ bluesix โดยคุณ bluesix 2011-06-14 17:44:02

ได้แล้วครับ
ผมลอง จำลองที่ PC Server ดู ปรากฏว่า มันม่มี MOD_rewrite
ให้เข้าไป Config ที่ httpd.conf
แล้วจัดการ เอา # ตรง LoadModule rewrite_module modules/mod_rewrite.so ออก ก็จะเหลือแต่
LoadModule rewrite_module modules/mod_rewrite.so
จากนั้น หาคำว่า
AllowOverride NONE
ก็ให้เปลี่ยนเป็น
AllowOverride ALL

หลังจากนั้น Save แล้วก็ restart Apache 1 รอบ แค่นี้ก็ได้แล้วครับ

นี่แหละครับ คนเรา โง่ก่อน ถึงจะฉลาด
// รุ่นพี่ เกียร์2 Siam U บอกมาอีกทีครับ ขอบคุณพี่กอล์ฟ และพี่ นุ้ยอะครับที่บอกมา

รูปคุณ bluesix โดยคุณ bluesix 2011-06-15 10:47:19

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



ขอความกรุณา ปัญญาชน ทุกๆท่าน รณรงค์การใช้ภาษาไทยให้ถูกต้อง
กรุณา ลงความคิดเห็นโดยใช้ภาษาไทยให้เป็นภาษาไทย งดการใช้ภาษาวัยรุ่น,
แอ๊บแบ๊ว บอกตรงๆปัญญาอ่อน !! Admin นั่งอ่านแล้วปวดหัว

เข้าระบบ


จำไว้ด้วยนะจ้ะ

สมัครสมาชิก
ลืมรหัสผ่าน

บทความล่าสุด

Gallery

เรียบร้อยพร้อมใช้คู่นี้ราคา 220 บาทคร้าบ @hongsyok @kangg วิธีซ่อมเอายางในมาติดกับพื้นรองเท้าตรงรูที่ขาด  @hongsyok @kangg รูความเสียหาย basic ของรองเท้าวิ่งประเภทตาข่างนี้  @hongsyok @kangg รองเท้ามือสองคู่ล่าสุด @hongsyok @kangg ยินดีกับกลุ่มข้ามเพศด้วยฮะ หน้าตาให้ ใจรักก็ลุยฮะ ความ Classic ของ ThinkPad แม้แต่ Lenovo ยังแยกแยะรุ่น ไม่ออกเลย ไอ้ควายเอ้ย น้ำตาแตกทุกราย เกาหลี รับเหรียญทองแล้ว ห่าง 1 แต้มแล้วเกาหลีนำ เอ้า สาวแว่นอีกซักรูป ฮาๆ ดอกนี้ เกาหลีโหดสาดกลางเป้าเลย อีกมุม ดอกนี้ เกาหลีโหดสาดกลางเป้าเลย จีนก็น่ารักนะฮ้าฟ ได้รูปสาวแว่นคนที่ 2 ของเกาหลีชัดๆแล้ว ภาพ Set ยิงธนูหญิง เกาหลี อีกคนก็น่ารัก ภาพ Set ยิงธนูหญิง เกาหลี สาวแว่นๆ อีกคน ภาพ Set ยิงธนูหญิง เกาหลี สาวแว่นๆ ดูระดับความคมชัด 720P จาก Youtube รื้อ HDD ลูกเก่าๆเจอ คลิป 500 วัน 1500 ไมล์ สมัย Load เก็บมาจาก mcot.net ดูไปอมยิ้มไป cc @1500miles

Tags

About me Apache จักรยาน Home Decorate Developer Search Engine Payment Gateway Cottoncandy ASP Security Music Game Shopping เฟรม OEM Android bicycle SEO Gallery Airnet SMS Plugin barcampbangkok2 Software Perl Freeware Web2.0 Motorcycle Lenovo API

อื่นๆ ...

เพื่อนบ้าน

สถิติส่วนตัว

คลิกรับ Feed สิจ๊ะ

TwitterCounter for @9aum

Scriptdd.com | ctdd Version 3.0 ติดต่อฐานข้อมูลทิ้งสิ้น 6 ครั้งใช้เวลาประมวลผล 0.0616 วินาที
โปรแกรมโดย 9AuM | ออกแบบโดย styleshout