หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: tosakp ที่ 11 ธันวาคม 2006, 17:57:59 20/12/2007:
ไม่ได้ Update นาน วันนี้ไปเจอข้อมูลเว็บภาษาไทย เห็นว่ามีประโยชน์ครับ http://www.phpconcept.com/node/8 ====================================== การแปลง URL โดยใช้ Mod_Rewrite Mod_Rewrite คืออะไร? Mod_Rewrite คือการแปลง URL ที่ดูยากให้อยู่ในรูปแบบที่เราต้องการ เพื่อประโยชน์หลายด้าน (ซึ่งจะกล่าวถึงต่อไป) และการแปลงเพื่อประโยชน์ด้าน SEO ก็เป็นอีกอันนึงที่มีการนำเอา Mod_Rewrite มาใช้ เพราะเรารู้กันดีว่า Search Engine ไม่ค่อยชอบ pages ที่เป็น dynamic ที่มี query string ยาวเฟื๊อย ตัวอย่าง URL ที่ยาว และซับซ้อน โค๊ด: http://www.site.com/viewcatalog.asp?category=hats&prodID=53 โค๊ด: http://www.site.com/catalog/hats/53/ เริ่มทำ Mod_Rewrite บาง Server ไม่สามารถจะทำ Mod_Rewrite ได้เนื่องจากไม่ได้ติดตั้ง Module Mod_Rewrite ดังนั้นถ้าเราจำเป็นต้องใช้ Mod_Rewrite ก็ต้องตรวจสอบดีๆก่อนเช่า host .htaccess ไฟล์สำคัญในการทำ Mod_Rewrite เราจะใช้ไฟล์นี้ในการกำหนด Rule ของการทำ Mod_Rewrite เริ่มต้นด้วยคำสั่ง อ้างถึง RewriteEngine on เพื่อเปิดการทำงาน เขียนไว้ในบรรทัดแรกสุดของไฟล์ ต่อไปจะเป็นการนำเอา Mod_Rewrite ไปให้งาน ซึ่งผมจะเริ่มด้วยตัวอย่างง่ายๆ และเขียน Rewrite Rule ง่ายก่อน แล้วก็ยกตัวอย่างต่อไปเรื่อยๆนะครับ ใช้ Mod_Rewrite ในการทำ Redirects ถ้าเราต้องการเปลี่ยน location เก่า ไปที่ Location ใหม่แบบถาวร อ้างถึง RewriteEngine on RewriteRule ^old\.html$ new.html ถ้าเราเขียนแบบนี้ เมื่อมีการใส่ url เป็น old.html มันก็จะถูกส่งไปที่ไพล์ new.html แต่ผู้เยี่ยมชมยังเห็น URL บน browser เป็น old.html อยู่เหมือนเดิม อาจจะดูงงๆ อธิบายเพิ่มเติมดังนี้ RewriteRule จะประกอบด้วยกัน 3 ส่วน 1. Call to action RewriteRule ขึ้นต้นบรรทัด กำหนดว่าบรรทัดนี้เป็น Rewrite Rule 2. Pattern ^old\.html$ เป็นการตรวจสอบ URL ที่ใส่เข้ามาทาง Location Bar ของ Browser ซึ่งจะใช้ regex (Regular Expression) ในการตรวจสอบ (จะอธิบายเพิ่มเติมต่อไป) 3. Rewrite new.html เป็น URL ที่เราต้องการให้แปลงเป็นอันใหม่ หมายเหตุ: จริงๆมี 4 ส่วน แต่ในตัวอย่างเราใช้ 3 ส่วน ขออธิบายในส่วนที่ 2 (Pattern) เพิ่มเติมดังนี้ ในส่วนนี้ประกอบด้วยเครื่องหมายสำคัญ 3 อย่างคือ ^old\.html$ - เครื่องหมาย The caret หรือ ^ เป็นการกำหนดจุดเริ่มต้น URL ที่อยู่ภายใต้ direcory ปัจจุบันที่เราจะตรวจสอบ ซึ่งก็คือ directory เดียวกับไฟล์ .htaccess - เครื่องหมาย The dollar sign หรือ $ ซึ่งบอกจุดสิ้นสุดของการตรวจสอบ Pattern - อีกเครื่องหมายนึงก็คือ The period หรือ . จุด ที่อยู่ข้างหน้านามสกุล html ซึ่งเครื่องหมาย จุด นั้นเป็นอักขระพิเศษ ใน regular expressions ซึ่งจะมีความหมายว่า แทนด้วยตัวอักษรใดๆ 1 ตัว (ดูเพิ่มเติมใน regular expressions ต่อจากนี้) แต่ในนี้เราจะตรวจสอบว่า ถ้า Pattern เป็น old.html หรือไม่ เราจึงต้องใส่ \ ซึ่งเป็น escape charactor ไว้ด้วย เมื่อเราเขียนตามนี้ เมื่อผู้เยี่ยมชมเว็บกรอกมาเป็น old.html server ก็จะทำ transparently redirect ไปที่ new.html โดยที่ผู้เยี่ยมชมเว็บไม่รู้ตัวว่าเป็นข้อมูลอันใหม่แล้ว เพราะ URL บน browser เป็น old.html อยู่เหมือนเดิม แต่ถ้าเราต้องการให้ URL ที่ปรากฏบน browser เป็น new.html ด้วย เราก็เพียงแต่เติม [R] เข้าไปต่อท้ายบรรทัด ดังนี้ อ้างถึง RewriteRule ^old\.html$ new.html [R] ซึ่ง [R] ก็คือ ส่วนที่ 4 ที่ผมบอกไว้ข้างบน 4. Command Flag [R] ซึ่งจะเป็นคำสั่งพิเศษกำหนดเงื่อนไขไว้ มีหลายคำสั่งซึ่งจะบอกไว้ตอนท้าย การใช้ Regular Expressions จะบอกว่า เป็นส่วนสำคัญที่สุดในการทำ Rewrite และมันก็ทำความความเข้าใจได้ยากพอควร ไม่ต้องห่วงครับ เดี๋ยวผมจะอธิบายเป็นขั้นตอน และยกตัวอย่างประกอบไปเรื่อยๆนะครับ ตัวอย่างแรก อ้างถึง RewriteRule ^products/([0-9][0-9])/$ productinfo.php?prodID=$1 จะเปลี่ยนจาก อ้างถึง productinfo.php?prodID=11 หรือ productinfo.php?prodID=99 ให้เป็นอ้างถึง products/11/ หรือ products/99/ ดูที่ Pattern จะมีส่วนของที่อยู่ในปีกกาเหลี่ยม [ ] เราเรียกว่า ranges ในตัวอย่างจะเป็น [0-9] ซึ่งจะใช้ตรวจสอบว่าเป็นตัวอักษรที่อยู่ในช่วง 0-9 ใดๆ เราสามารถตรวจสอบ ranges อื่นได้ เช่น [A-Z] ตรวจสอบว่าเป็นตัวอักษรตัวใหญ่ตั้งแต่ A-Z [a-z] ก็เป็นการตรวสอบตัวเล็ก, ถ้า [A-Za-z] ก็ตรวจสอบว่าเป็นทั้งตัวใหญ่และตัวเล็ก เป็นต้น และใน Pattern ก็จะมีส่วนที่อยู่ในวงเล็บ ( ) เป็นการเก็บค่าที่เราตรวจสอบพบ และตรงตามเงื่อนไข ซึ่งเราสามารถเอาค่านี้ ส่งไปให้ PHP ในส่วนของ Query String ได้ เราเรียกค่าที่ได้จากวงเล็บนี่ว่า back-reference เราสามารถตรวจสอบและแยก back-reference ออกได้หลายๆอันใน URL อันเดียว (ดูตัวอย่างต่อๆไป) ซึ่ง back-reference ในวงเล็บแรก เวลาเราอ้างถึงเราก็จะใช้ $1 ส่วนลำดับต่อๆไป ก็จะเป็น $2, $3 ไปเรื่อยๆ ดังนั้นผู้เยี่ยมชมเว็บ(หรือ bot ก็ได้)ก็จะเห็น url เป็น products/11/ หรือ products/99/ ซึ่ง สั้นและกระชับ โดยหารู้ไม่ว่า เราได้ซ่อน URL ที่ไม่ค่อยสวยงามและอ่านยากไว้เบื้องหลัง ......................... ต่อภาค 2 ..................... ใส่ / ต่อท้าย บางครั้งผู้เยี่ยมชมเว็บ อาจจะพิมพ์ URL แค่ products/12 ซึ่งเมื่อเข้าไปตรวจสอบใน Pattern ด้านบน ก็จะไม่ตรง เพราะ Pattern ด้านบนจะต้องมี / ต่อท้ายด้วย มันจึงไม่ทำ transparently redirect ให้เรา เราก็มีวิธีแก้เหตุการณ์แบบนี้ ซึ่งเราก็จะเขียน Rule ใหม่เพิ่มเข้าไปดังนี้ อ้างถึง RewriteRule ^products/([0-9][0-9])$ products/$1/ [R] RewriteRule ^products/([0-9][0-9])/$ productinfo.php?prodID=$1 ดังนั้น เมื่อ Server ตรวจเจอ products/12 ก็จะเปลี่ยน URL เป็น products/12/ และแสดง URL ให้บน Browser ด้วย เพราะเราใส่ [R] ไว้ด้วย เมื่อเจอเงื่อนไขบรรทัดที่ 2 ก็เลยไม่มีปัญหาใดๆ ซึ่งมันก็จะส่งเป็น transparently redirect ไปที่ productinfo.php?prodID=12 ตามความต้องการของเรา การใช้ Match Quantifiers จะเป็นว่าตัวอย่างข้างบน เรากำหนดเป็น ^products/([0-9][0-9])$ นั่นหมายความว่า ตัวเลขที่ตามหลัง products/xx ต้องมี 2 ตัวเท่านั้น ซึ่งก็จะเป็นไปได้สูงสุดแค่ 99 แล้วกรณี productinfo.php?prodID=100 ล่ะจะทำอย่างไร? ในกรณีนี้ เราสามารถใช้ Quantifiers เป็นตัวกำหนดได้ (Quantifiers มีหลายตัว จะอธิบายต่อไปเรื่อยๆ) ดังตัวอย่าง อ้างถึง RewriteRule ^products/([0-9]+)$ products/$1/ [R] เครื่องหมายบวก + แทนอักษรตั้งแต่ 1 ตัว ถึง n ตัว (ตั้งแต่ 1 ตัวขึ้นไป) ดังนั้น [0-9]+ ก็หมายความว่า เป็นตัวเลข 0-9 ตั้งแต่ 1 หลักขึ้นไป ถ้าเราใส่ products/1 หรือ products/1000 ก็สามารถ Match case นี้ได้แล้วครับ เดี๋ยวมาต่อครับ... อ้างถึง ข้อมูลเพิ่มเติมของ Rewrite Rule RewriteRule Regular expressions Some hints about the syntax of regular expressions: Text: . Any single character [chars] One of chars [^chars] None of chars text1|text2 text1 or text2 Quantifiers: ? 0 or 1 of the preceding text * 0 or N of the preceding text (N > 0) + 1 or N of the preceding text (N > 1) Grouping: (text) Grouping of text Anchors: ^ Start of line anchor $ End of line anchor Escaping: \ char escape that particular char Pattern Matching metacharacter Definitions \ Use before any of the following characters to escape or null the meaning or it. \* \. \$ \+ \[ \] ^ Start matching at this point $ End point of the match . Any character [] Starts a range | Starts alternative match this|that would mean match this or that () starts a back reference point ? match 0 or 1 time Quantifier + match atleast 1 or more times Quantifier * match 0 to infinite times Quantifier {} match minimum to maximum Quantifier {0,3} match up to 3 times Range Definitions [] ^ Negates the class. [^A-Z]+ means don't match any uppercases \ Use before any of the following characters to escape or null the meaning or it. [\+]+ - Range for matching [0-9]+ [a-zA-Z]+ Command Flag [R] Redirect you can add an =301 or =302 to change the type. [F] Forces the url to be forbidden. 403 header [G] Forces the url to be gone 401 header [L] Last rule. (You should use this on all your rules that don't link together) [N] Next round. Rerun the rules again from the start [C] Chains a rewrite rule together with the next rule. [T] use T=MIME-type to force the file to be a mime type [NS] Use if no sub request is requested [NC] Makes the rule case INsensitive [QSA] Query String Append use to add to an existing query string [NE] Turns of normal escapes that are default in the rewriterule [PT] Pass through to the handler (together with mod alias) [E] E=var sets an enviromental variable that can be called by other rules หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: win ที่ 11 ธันวาคม 2006, 18:02:23 ขอบคุณคุณ tosakp มากๆ ครับ
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: danupol ที่ 11 ธันวาคม 2006, 18:21:37 ขอบคุณมากๆ เลยครับ (http://xs110.xs.to/xs110/06501/boy06dj7dt9.gif)
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: Puong ที่ 11 ธันวาคม 2006, 18:31:21 มีประโยชน์ต่อผู้ไม่รู้อย่างผมมากเลย ขอบคุณครับ
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: Step9 ที่ 11 ธันวาคม 2006, 18:40:32 Oh my Goodness!!
เชื่อว่าหลายๆคน ต่างก็ต้องการคนที่จะมาให้ความรู้ทางด้านโปรแกรมเมอร์ หรืออย่างน้อยเป็นที่ปรึกษา ทางด้านภาษาComputer ก็ยังดี ยังไม่อยากจะหวังไปถึงห้อง"ไขปัญหาภาษาคอมฯ"ดอกนะครับ (เพิ่งจะขอห้อง จดหมายเหตุจากGoogleไปหยกๆ แหะๆ) แต่การเริ่มต้นแบบนี้นับเป็นสิ่งที่น่าชื่นชมยิ่งครับ ขอบคุณครับ :P หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: golf98765 ที่ 11 ธันวาคม 2006, 18:44:47 สุดยอดอีกแล้วครับท่าน หุหุ
ขอบคุณมักๆ หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: jane ที่ 11 ธันวาคม 2006, 18:57:32 ขอบคุณม๊ากกกกกกค่ะ คุณ tosakp
เครื่องหมายเต็มไปหมดเลย - -' มีอยู่เครื่องหมายนึงที่ชอบมากเป็นพิเศษ อ้างถึง $$$$$$$$$ :wink:หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: Warrez ที่ 11 ธันวาคม 2006, 18:58:57 ขอบคุณมากๆคับพี่ต่อ :D
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: August(ซิง) ที่ 11 ธันวาคม 2006, 20:45:20 รักพี่ต่อจริง จริ๊ง ขอบคุณคร้าบ
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: xex ที่ 11 ธันวาคม 2006, 21:18:15 ขอบคุณก่อน แล้วค่อยศึกษาทีหลัง คร๊าลบๆๆๆ
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: EThaiZone ที่ 12 ธันวาคม 2006, 00:25:36 ดีเลยครับที่มาเขียนแบบนี้ (ผมได้อ่านด้วย :D )
เหอๆ ถ้าผมมีเวลาก็อยากมาเขียนให้เหมือนกัน :( แต่เขียนได้ละเอียดกว่าที่ผมรู้อีก โดยเฉพาะ Command Flag อันนี้ผมไม่รู้เลย หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: youcanberich ที่ 12 ธันวาคม 2006, 00:53:24 ขอบคุณมากครับกระจ่างเลยครับ ไม่ต้องไปหาอ่านที่ไหนแล้วว :D :D :D
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: pook ที่ 12 ธันวาคม 2006, 01:32:34 ขอบคุณพี่ต่อครับ เยี่ยมจริงๆ
ปุ๊ก หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: xex ที่ 21 ธันวาคม 2006, 15:59:28 วันนี้จะได้ใช้แล้ว
มีเรื่องตลกครับ ผมไป search หาใน Google และ ระบุว่าในไทย ปรากฏว่า Google บอกมาหน้านี้ในลำดับต้นๆ เหอะๆ เรียกว่า ไม่ต้องไปไหนไกลเลยครับ สุดท้่ายก็ต้องกลับมาหาความรู้ที่ละเีอียดแบบยิบ ใน thaiseo นี่แหละ ิแต่ใน thai seo นี่ติดอย่างเดียว หายากมากๆ ให้ตรงประเด็น ผมพยายาม search หา มันไม่เจอแบบตรง ถ้า คำเดียว OK แต่หลายๆคำเริ่มร่วน ครับ เข้าเืรื่องดีกว่าครับ Files ทีว่านี้เขียน ใส่ในไหนครับ ผมเข้าใจว่า ใน .htaccess ของ host แต่มันเขียนยังไง ใช้ nodepad เขียนเลยเหรอครับ แล้วก็ Upload ไป ถูกไหม server hostforseo ใช้ได้ไหม เห็นมี Files นี้อยู่แต่ผมไม่เคยทำอะไรเลยอ่ะ ขอบคุณครับ :D หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: EThaiZone ที่ 21 ธันวาคม 2006, 16:09:56 ถูกครับ ใช้ notepad ก็ได้แล้วเขียนเลย
อัพใส่จะมีผลกับโฟลเดอร์ที่วางไว้ และซัพโฟลเดอร์ที่อยู่ข้างในด้วยครับ :D หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: tosakp ที่ 21 ธันวาคม 2006, 16:46:17 อ้างจาก: "xex" แต่ใน thai seo นี่ติดอย่างเดียว หายากมากๆ ให้ตรงประเด็น ผมพยายาม search หา มันไม่เจอแบบตรง ถ้า คำเดียว OK แต่หลายๆคำเริ่มร่วน ครับ เรื่องของการใช้ฟังก์ชั่นค้นหา ด้านบน ของ PHPBB นั้นต้องแก้ script ให้มันหาแบบไทยๆหน่อยน่ัะครับ ตอนนี้มันหาแบบฝรั่ง คือมันใช้ Space เป็นตัวแยกคำ ทำให้เรามักจะหาไม่เจอ เช่น ถ้าเราพิมพ์คำว่า "เสียวบอร์ด" ในคำค้น จะไม่เจอคำว่า "ไทยเสียวบอร์ดแหล่งรวมคนชอบ SEO" แต่ถ้ากระทู้ไหนมีคำว่า "ไทย เสียวบอร์ด แหล่งรวมคนชอบ SEO" ประมาณนี้ ก็เลยทำให้ใช้ประโยชน์จากฟังก์ชั่นการค้นหาได้ไม่เต็มที่ ถ้าได้แก้ script PHPBB นิดนึงนะ จะจ๊าบมากๆเลยล่ะครับพี่น้อง ต้องแจ้งคุณพิซซ่ามั๊งครับ หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: mv ที่ 21 ธันวาคม 2006, 20:52:15 คุณ tosakp ผมสนใจมากเลย ลองเอาไปใช้แล้วได้ประโยชน์มากเลยครับ
แต่ผมติดอยู่นิดนึงคือคำสั่ง [R] เหมือนมันไม่ทำงานอะครับ ผมไม่อยากให้ user ต้องพิมพ์ / ตามหลัง url ผมเลยใช้วิธีที่คุณบอก แต่พอใส่ [R] ก็เข้าหน่า errer เลยอะคับ โค๊ด: RewriteEngine on อันนี้เวลาพิมพ์ต้อง www.domanname.com/sompong/ แต่อยากเอาแค่นี้ www.domanname.com/sompong มีวิธีรึปล่าวคับ หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: Step9 ที่ 21 ธันวาคม 2006, 21:27:57 ระหว่างเขียนเองกับ ใช้เว็บแปลงนี่ได้ผลOKเหมือนกันไหมครับ
http://www.thaiseoboard.com/viewtopic.php?t=3993&highlight=tiny หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: tosakp ที่ 21 ธันวาคม 2006, 23:42:28 อ้างจาก: "mv" คุณ tosakp ผมสนใจมากเลย ลองเอาไปใช้แล้วได้ประโยชน์มากเลยครับ แต่ผมติดอยู่นิดนึงคือคำสั่ง [R] เหมือนมันไม่ทำงานอะครับ ผมไม่อยากให้ user ต้องพิมพ์ / ตามหลัง url ผมเลยใช้วิธีที่คุณบอก แต่พอใส่ [R] ก็เข้าหน่า errer เลยอะคับ โค๊ด: RewriteEngine on อันนี้เวลาพิมพ์ต้อง www.domanname.com/sompong/ แต่อยากเอาแค่นี้ www.domanname.com/sompong มีวิธีรึปล่าวคับ ลองดูอันนี้ดูนะครับ อ้างถึง rewriteEngine on rewriteBase / rewriteCond %{REQUEST_URI} !/$ rewriteCond %{REQUEST_URI} !\. rewriteRule ^(.+)$ blog/user.php?username=$1 rewriteRule ^(.+)/$ blog/user.php?username=$1 หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: thaiseodev ที่ 21 ธันวาคม 2006, 23:52:52 อ้างจาก: "tosakp" อ้างจาก: "mv" คุณ tosakp ผมสนใจมากเลย ลองเอาไปใช้แล้วได้ประโยชน์มากเลยครับ แต่ผมติดอยู่นิดนึงคือคำสั่ง [R] เหมือนมันไม่ทำงานอะครับ ผมไม่อยากให้ user ต้องพิมพ์ / ตามหลัง url ผมเลยใช้วิธีที่คุณบอก แต่พอใส่ [R] ก็เข้าหน่า errer เลยอะคับ โค๊ด: RewriteEngine on อันนี้เวลาพิมพ์ต้อง www.domanname.com/sompong/ แต่อยากเอาแค่นี้ www.domanname.com/sompong มีวิธีรึปล่าวคับ ลองดูอันนี้ดูนะครับ อ้างถึง rewriteEngine on rewriteBase / rewriteCond %{REQUEST_URI} !/$ rewriteCond %{REQUEST_URI} !\. rewriteRule ^(.+)$ blog/user.php?username=$1 rewriteRule ^(.+)/$ blog/user.php?username=$1 URL แบบมี / ปิดท้าย ดีที่สุดนะครับ ฝึกพิมพ์ให้ติดไว้ :P หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: UnzO ที่ 14 มกราคม 2007, 22:30:33 มีปัญหานิดหน่อยครับ คือ เมื่อเรา rewrite ใหม่แล้ว พวกรูปทั้งหลายที่เราใส่ไว้ว่า "img/pic01.jpg" มันจะไม่ออก ทำให้เราต้องเปลี่ยน url ของรูปใหม่ทั้งหมดใน src ไฟล์ ซึ่งหากเป้นเว็บใหญ่ๆ ก็จะเวลาพอสมควร (จิงๆ แล้วมันใช้ Find Replace ได้ แต่เราก็ต้องตรวจด้วยตาอีกเพื่อความแน่นอน)
จึงอยากจะสอบถามว่า มันพอมีทางแก้ในการเขียนรึป่าวครับ ผมแค่สงสัยหน่ะครับ ว่าเราต้องแก้แบบนี้ทุกครั้งรึป่าวครับ ส่วนอีกข้อคือ ระหว่าง http://www.domain.com/magician/Criss%20Angle/7/ และ http://localhost/magician/Criss-Angle/7/ อันไหนจะมีดีหรือผมเสียกันแค่ไหน หรือไม่มีผล ครับ และเราสามารถแก้ในการ rewrite ได้รึป่าวครับ ว่าถ้าเจอ ช่องว่างให้เปลี่ยนเป้น - หรือเราต้องใช้ php เขียน ขอบคุณครับ อาจถามเยอะไปหน่อยนะ แหะๆ หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: EThaiZone ที่ 14 มกราคม 2007, 23:41:57 ต้องทำใน php ครับ มีหลายวิธี
อันนี้แล้วแต่บุคคลครับ ส่วนเรื่องปัญหาการอ้างถึงรูป แก้ได้ด้วยการเรียกแบบ full url ครับ ทำกับทุกรูปเลย และความจริงอยากให้ดี ทำ full url กับลิงค์ภายในก็ดีครับ จะช่วยให้ search engine เข้าใจง่ายขึ้นครับ อาจจะมีผลกับเรื่องอินเด็กด้วยน้า :wink: หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: UnzO ที่ 15 มกราคม 2007, 01:24:43 ขอบคุณครับ ว่าแต่ท่าน EthaiZone เนี้ย มีเมลล์ผมด้วยนี้นา ไม่ยักรู้ว่าอยู่บอร์ดนี้ด้วย (แบบว่าไม่ค่อยได้เข้ามาหาความรู้เท่าไหร่ ช่วงนี้เซ้งเซ็ง คนรักจากไป :cry: )
ปล. ในเมลล์ท่านมี UnzO Corporation ป่ะครับ :?: หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: hurahura ที่ 07 กุมภาพันธ์ 2007, 17:12:51 ขอจะถามหน่อยครับว่าเราจะรู้ได้ยังไงว่า Host มันใช้ได้หรือเปล่า
ผลลงโทรไปถาม คุยกันตั้งนานกว่าจะรู้เรื่อง เพราะไม่รู้ว่าจะเรียกมันว่าอะไร เรียกว่า Mod_Rewrite ไม่เห็นเขารู้จักเลย ต้องนั่งอธิบาย สุดท้ายเขาให้เข้าไปดูที่ phpinfo ที่ตรง url_rewriter.tags ซึ่งผมก็ไม่รู้ว่ามันคืออย่างเดียวกันหรือเปล่า นี่ดีนะลองถามจากเว็บ host ของไทย ถ้าของฝรั่งจะคุยยังไงเนี่ย จึงอยากทราบครับว่ามีวิธีดูตรงไหน ว่าโฮสนั่นๆ สามารถใช้ได้ มันจะใช้ได้เฉพาะลีนุกหรือเปล่า หรือไม่เกี่ยวกัน หรือถ้าต้องโทรถามจริงๆ จะถามว่าอย่างไรให้เข้าใจตรงกัน ขอบคุณครับ หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: kingmaster ที่ 07 กุมภาพันธ์ 2007, 17:21:51 อ้างจาก: "hurahura" ขอจะถามหน่อยครับว่าเราจะรู้ได้ยังไงว่า Host มันใช้ได้หรือเปล่า ผลลงโทรไปถาม คุยกันตั้งนานกว่าจะรู้เรื่อง เพราะไม่รู้ว่าจะเรียกมันว่าอะไร เรียกว่า Mod_Rewrite ไม่เห็นเขารู้จักเลย ต้องนั่งอธิบาย สุดท้ายเขาให้เข้าไปดูที่ phpinfo ที่ตรง url_rewriter.tags ซึ่งผมก็ไม่รู้ว่ามันคืออย่างเดียวกันหรือเปล่า นี่ดีนะลองถามจากเว็บ host ของไทย ถ้าของฝรั่งจะคุยยังไงเนี่ย จึงอยากทราบครับว่ามีวิธีดูตรงไหน ว่าโฮสนั่นๆ สามารถใช้ได้ มันจะใช้ได้เฉพาะลีนุกหรือเปล่า หรือไม่เกี่ยวกัน หรือถ้าต้องโทรถามจริงๆ จะถามว่าอย่างไรให้เข้าใจตรงกัน ขอบคุณครับ ถ้าเป็น apache ใช้ได้ชัวน์ครับ แต่เค้าต้องเปิดใช้งาน mod_rewrite ในไฟล์ httpd.conf ก่อนครับ บอกให้เค้าหาบรรทัดนี้ #LoadModule rewrite_module modules/mod_rewrite.so แล้วเอาเครื่องหมาย # ด้านหน้าออก save แล้ว restart apache แค่นี้ก็ใช้ได้ละครับ หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: ColdMoney ที่ 07 กุมภาพันธ์ 2007, 17:53:37 ขอบคุณมากครับ เดี๋ยวจะกลับมาอ่านให้จบ :P :P
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: akibara ที่ 12 มีนาคม 2007, 20:43:33 โค๊ด: rewriteCond %{REQUEST_URI} !/$ ไม่ทราบว่าผิดยังไงเหรอครับ คือมันขึ้นแต่ $2 ส่วน $1 ว่าง คือผมจะแปลงเป็นงี้อะคับ สมมุติ /blog/diary ให้มาเอา blog มาเป็น $1 ส่วน diary มาเป็น $2 อย่างงี้อะคับ เพราะถ้าทำแบบนี้ มันจะเอามาเฉพาะ diary ส่วน blog จะไม่ถูกดึงมาด้วย ขอบคุณมากฮะ หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: aomnaruk ที่ 17 เมษายน 2007, 14:27:33 แล้วถ้า URL หลัง REwrite มีเครื่องหมาย "+" จะพิมพ์คำสั่งยังไงครับ
หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: Tee++; ที่ 17 เมษายน 2007, 15:48:05 อ้างจาก: "aomnaruk" แล้วถ้า URL หลัง REwrite มีเครื่องหมาย "+" จะพิมพ์คำสั่งยังไงครับ \+ หัวข้อ: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: EThaiZone ที่ 17 เมษายน 2007, 20:08:07 อ้างจาก: "UnzO" ขอบคุณครับ ว่าแต่ท่าน EthaiZone เนี้ย มีเมลล์ผมด้วยนี้นา ไม่ยักรู้ว่าอยู่บอร์ดนี้ด้วย (แบบว่าไม่ค่อยได้เข้ามาหาความรู้เท่าไหร่ ช่วงนี้เซ้งเซ็ง คนรักจากไป :cry: ) ปล. ในเมลล์ท่านมี UnzO Corporation ป่ะครับ :?: มีครับๆ ผมก็เพิ่งรู้ว่าทั่นอยู่ในบอร์ดด้วยเหมือนกัน :lol: สำหรับท่านๆ ที่ไม่เข้าใจเรื่อง rewrite โค๊ด: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: hurahura ที่ 15 พฤษภาคม 2007, 21:15:36 ต้งอไป set อะไรก่อนหรือเปล่าครับ ถึงจะใช้ได้
ทำไมทำแล้วไม่เห็นเกิดอะไรขึ้นเลย ใช้ hostmonster หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: joe ที่ 03 กันยายน 2007, 07:52:40 ขอขุดหน่อยครับ ไม่รู้ว่า .htaccess มันจะช่วยได้ป่าว
คือสมมติผมมีข้อมูลเก็บอยู่ที่ subdirectory ของ root อะครับ ประมาณแบบนี้ อ้างถึง /home/userid/public_html/joeimages/1/header.gif /home/userid/public_html/joeimages/1/bg.gif /home/userid/public_html/joeimages/1/border.gif /home/userid/public_html/joeimages/1/footer.gif /home/userid/public_html/joeimages/2/header.gif /home/userid/public_html/joeimages/2/bg.gif /home/userid/public_html/joeimages/2/border.gif /home/userid/public_html/joeimages/2/footer.gif /home/userid/public_html/joeimages/3/header.gif /home/userid/public_html/joeimages/3/bg.gif /home/userid/public_html/joeimages/3/border.gif /home/userid/public_html/joeimages/3/footer.gif ถ้ามีการเรียก url hxxp://www.addondomain.com/joeimages/1/bg.gif แล้วผมต้องการให้มันไปดึงข้อมูลมาจาก path ตามด้านบนอะครับ คือตอนนี้ผมเขียนให้มันเรียกได้แล้ว แบบนี้ อ้างถึง Options +FollowSymLinks RewriteEngine on RewriteRule ^joeimages/([0-9]+)/(.*)$ hxxp://www.maindomain.com/joeimages/$1/$2 แต่มันมีปัญหาตรงที่ว่า ผมเข้าไปเช็คดูในโฮส ปรากฎว่ามันเปลือง bandwidth มากเลยครับ เพราะมันเหมือนเรียก ผ่าน browser ทุกครั้งเลย ผมเลยอยากเปลี่ยนให้มันเรียกผ่าน path ตรงๆ เลยจะเขียนยังไงครับ เลยลองเปลี่ยนเป็นแบบนี้ แต่ลองแล้วมันเรียกไม่ได้อะครับ อ้างถึง Options +FollowSymLinks RewriteEngine on RewriteRule ^joeimages/([0-9]+)/(.*)$ /home/userid/public_html/joeimages/$1/$2 คำถามครับ .htaccess มันเขียนให้ไปดึงข้อมูลจาก path ที่ต้องการมาตรงๆเลยได้มั้ยครับ ?? คือผมไม่อยากสร้าง directory จริงๆให้กับ addondomain อะครับ ข้อมูลมันเยอะ เวลามีการแก้ไขทีต้อง copy แก้กันนานเลย :-* หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: ttk ที่ 05 พฤศจิกายน 2007, 18:22:28 ผมลอง แบบง่ายที่สุดอ่ะครับ คือสร้างไฟล์ไว้สองตัว a.html กับ b.html แล้วเขียนใน .htaccess ยังงี้อ่ะครับ
RewriteEngine on RewriteRule ^a\.html$ b.html แล้ววางไฟล์ .htaccess ไว้ใน folder เดียวกันกับไฟล์ทั้งสองตัว จากนั้น พอลองเข้าไปที่ a.html มันขึ้น error ว่ายังงี้น่ะครับ Server error! The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a CGI script. If you think this is a server error, please contact the webmaster. Error 500 หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: EThaiZone ที่ 05 พฤศจิกายน 2007, 18:52:20 ตอบคุณ hurahura
ลองติดต่อซัพพอร์ทดูครับ ผมเองก็ไม่เคยใช้ hostmonster ครับ ตอบคุณ Joe ใช้แบบนี้แทนครับ Options +FollowSymLinks RewriteEngine on RewriteRule ^joeimages/([0-9]+)/(.*)$ joeimages/$1/$2 แต่ผมก็ไม่เข้าใจว่าจะรีไรท์ไปทำไม :P ส่วนที่ถามว่าดึงโดยตรงได้ไหม ได้ครับ ตอบคุณ ttk เข้าใจว่ามันหาไฟล์ b.html ไม่เจอ ไม่ก็เป็นที่เซอเวอร์ ลองติดต่อซัพพอร์ทให้ช่วยดูก็ได้ครับ เพราะขึ้นอยู่กับตำแหน่งโฟลเดอร์ด้วย (ในบางที) หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: joe ที่ 05 พฤศจิกายน 2007, 20:00:04 คุณ ethaizone คงเข้าใจผิดอะครับ
โค๊ด: /home/userid/public_html/joeimages/1/header.gif ตรงนี้มันอยู่ในส่วนของ main-domain นะครับ เพราะฉะนั้น path url จริงๆ ของมันก็จะเป็น http://www.main-domain.com/joeimages/1/header.gif แต่ที่ผมต้องการคือเรียกผ่าน addon-domain http://www.addon-domain.com/joeimages/1/header.gif โดยที่ folder ของ addon-domain นั้นมันไม่มี directory joeimages อยู่จริงๆ จะให้มันไปดึงจาก /home/userid/public_html/joeimages/1/header.gif ว่าง่ายๆก็คือ ผมจะให้ folder joeimages ร่วมกันทั้งหมด ทุกๆโดเมนในโฮสนะครับ แต่ตอนนี้ไม่ได้ใช้แระ เวบปั่นโดนแบน สมัครใหม่ยังไม่ผ่านเลย :P หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: Dr.K ที่ 05 พฤศจิกายน 2007, 20:57:48 ให้ server หลัก มี
Alias เป็นชื่อserver รองสิครับ หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: EThaiZone ที่ 06 พฤศจิกายน 2007, 08:46:12 คุณ ethaizone คงเข้าใจผิดอะครับ โค๊ด: /home/userid/public_html/joeimages/1/header.gif ตรงนี้มันอยู่ในส่วนของ main-domain นะครับ เพราะฉะนั้น path url จริงๆ ของมันก็จะเป็น [url]http://www.main-domain.com/joeimages/1/header.gif[/url] แต่ที่ผมต้องการคือเรียกผ่าน addon-domain [url]http://www.addon-domain.com/joeimages/1/header.gif[/url] โดยที่ folder ของ addon-domain นั้นมันไม่มี directory joeimages อยู่จริงๆ จะให้มันไปดึงจาก /home/userid/public_html/joeimages/1/header.gif ว่าง่ายๆก็คือ ผมจะให้ folder joeimages ร่วมกันทั้งหมด ทุกๆโดเมนในโฮสนะครับ แต่ตอนนี้ไม่ได้ใช้แระ เวบปั่นโดนแบน สมัครใหม่ยังไม่ผ่านเลย :P อ้อครับ คงเป็น hostgator งั้นก็ Options +FollowSymLinks RewriteEngine on RewriteRule ^joeimages/([0-9]+)/(.*)$ ../joeimages/$1/$2 หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: paradox_073 ที่ 06 พฤศจิกายน 2007, 09:08:46 :) เยี่ยมมากเลย :D
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: tosakp ที่ 20 ธันวาคม 2007, 16:13:33 20/12/2007:
ไม่ได้ Update นาน วันนี้ไปเจอข้อมูลเว็บภาษาไทย เห็นว่ามีประโยชน์ครับ http://www.phpconcept.com/node/8 เกี่ยวกับ regexp ซึ่งต้องใช้บ้างในการทำ URL Rewrite หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: thaidesigner ที่ 12 กรกฎาคม 2008, 02:32:34 :P ขอบคุณมาก กำลังมึนเลย บอรืดตัวเองเจ๊ง เพราะไปลงตัวนี้ครับ
โค๊ด: [url]http://www.phpbb-seo.com/boards/simple-seo-url-vf60/[/url] แถมตีมที่ใช้ดันไม่มีซับพอร์ทอีก :P หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: etgsgroup ที่ 12 กรกฎาคม 2008, 09:04:46 ขอบคุณที่ขุดมานะครับ ผมก็กำลังมึน ๆ กับ mod_rewrite พอดีครับ
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: wisan.n ที่ 14 มิถุนายน 2009, 23:06:30 ใครรู้บ้างว่า จะเอา page title มา Rewrite เป็นชื่อไฟล์
เช่น ้http://www.demo.com/text.php ---> page titile เป็น "pagetitle นะคับ" ไปเป็น ้http://www.demo.com/pagetitle-นะคับ.html :-* หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: kanate ที่ 16 มิถุนายน 2009, 09:04:43 อ่านแล้วมึนเหมือนกันครับ ...
ขอบคุณสำหรับบทความดีๆ ครับ :D หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: Webstory ที่ 16 มิถุนายน 2009, 09:57:36 ขอบคุณครับ กำลังจะหัดเขียน .htaccess พอดีเลย
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: yyy ที่ 16 มิถุนายน 2009, 11:30:10 มึนต้วยคน ขอศึกษาเพิ่มอีกหน่อย
ขอบคุณครับ หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: nbaboyz ที่ 18 มกราคม 2011, 11:15:52 ผมเขียนแบบนี้
โค๊ด: RewriteRule ^([^/]*)\.html$ /atical_read.php?no=$1 [L] เวลาเรียกใช้งาน http://www.mysite.com/1.html ได้ครับ แต่มันไปซ้ำกับส่วนอื่นอยากให้ มันเป็น http://www.mysite.com/atical/1.html ต้องทำยังไงอ่ะครับ ขอบคุณล่วงหน้าครับ หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: mzchewiize ที่ 07 สิงหาคม 2011, 23:08:57 ขุดหน่อยยย เข้ามาจดดๆๆๆ
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: cs731 ที่ 07 สิงหาคม 2011, 23:36:39 ความรู้ล้วน............อิอิ
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: inmysmallroom ที่ 22 มกราคม 2012, 19:22:45 วันนี้เสิร์ชหาบทความดีๆเรื่อง mod-rewrite เจอกระทู้นี้ ขอเก็บไว้อ่านก่อน ขอบคุณมากค่ะ :wanwan017:
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: huyhuy122 ที่ 10 กุมภาพันธ์ 2012, 00:46:34 ขอบคุณครับ
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: creditonhand ที่ 31 พฤษภาคม 2012, 16:34:50 แล้วถ้าเป็นภาษา asp ต้องแปลงงัยค่ะใครรู้บ้าง
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: piranon ที่ 17 มิถุนายน 2012, 18:46:25 ขอบคุณครับผม :wanwan017:
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: forceinw ที่ 07 กรกฎาคม 2012, 22:37:16 :wanwan020: Thanks
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: LoveDead ที่ 07 กรกฎาคม 2012, 23:00:40 ขอบคุณมากครับ :wanwan017:
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: SumaYi ที่ 07 กรกฎาคม 2012, 23:31:14 เป็นการขุดที่มีประโยชน์ :wanwan017:
หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: jommann ที่ 25 กุมภาพันธ์ 2015, 14:37:24 พอดีผมเข้ามาอ่านแล้ว อยากจะต่อยอดคำถามอีกนิดคับ ถ้าผมต้องการจะ rewrite จาก
htt://domainname/seminar ให้เป็น htt://domainname/สัมมนา ลิงค์ไปยัง ที่เดียวกัน ต้องทำยังงััย รบกวน ผู้รู้ด้วยน่ะครับ หัวข้อ: Re: การแปลง URL โดยใช้ Mod_Rewrite เริ่มหัวข้อโดย: fielddev ที่ 07 เมษายน 2015, 22:54:59 ขอบคุณมากครับ :'(
|