ThaiSEOBoard.com

พัฒนาเว็บไซต์ => CMS & Free Script => หัวข้อเริ่มโดย: Reality ใน 05 มกราคม 2010, 12:23:09

ชื่อเรื่อง: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Reality ใน 05 มกราคม 2010, 12:23:09
เนื่องด้วย ปีใหม่ + ผมมาอยู่ที่นี้นานแล้ว.. ได้อะไรไปก็เยอะ ก็อยากจะตอบแทนบ้าง!
แต่พลังวัตร SEO ก็ยังไม่ถึง ก็ขออนุญาติเอาความสามารถ Programming มาตอบแทนเพื่อนๆ นะครับ :-[

วิธีนี้ไม่ใช่ Pure Rewrite นะครับ ลองอ่านดูน่าจะเข้าใจว่าทำไมผมพูดอย่างนั้น
ผลลัพท์ที่น่าจะได้
example.com/board/1-บอร์ดทดสอบ.html
example.com/topic/2-กระทู้ทดสอบ.html

ผมจับมือทำเลยนะครับ แค่ 2 อย่างก่อน (เหนื่อย)

ลองอ่าน.. ค่อยๆ ทำความเข้าใจนะครับ ประยุกต์ได้เยอะ

มีปัญหา + คำถามก็ลงไว้นะครับ ผมขอตัวไปเรียนก่อน :o

ปล. น้องผมเอาไปลงว่าใช้ได้นะครับ

-------

Update!
- ผมแก้ที่ไฟล์ MessageIndex.php -> โดยการใส่
str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim( -ตัวแปร- ))
จุดประสงค์ก็คือ เปลี่ยนอักษร #,+,?,% และช่องว่าง ให้เป็น - ไปซะ เวลาผ่านลิ้งจะได้ไม่มีปัญหา
ทดสอบแล้วว่าใช้ได้ในระดับนึงนะครับ (ไม่กล้ายืนยัน 100% เพราะผมทดสอบคนเดียว)
(http://upic.me/i/vi/d1hzz.jpg)

-------
ผมใช้ Appserv 2.5.2 นะครับ เป็นตัวอย่าง
root dir: C:\AppServ\www\Lab\SMF

เอาละครับ เริ่มจาก SMF 1.1.11 เพิ่งลดสดๆ หมาดๆ เลยครับ^^"
ผมโมภาษาอังกฤษนี้แหละนะครับ ไม่ต่างกัน

เราจะลองทำทีละขั้นนะครับ ลองกัดสดๆ ขั้นตอนไหนไม่ได้ก็แก้ปัญหาไป
ขั้นแรก! ออกแบบ URL ครับ!
ในตัวอย่างผมจะใช้แบบนี้ครับ
bbslab/board/1-General-Discuzz.html <--- ใช้เวลาเลือกเว็บบอร์ด
bbslab/topic/123453-สวัสดีชาวโลก.html <--- ใช้เวลาเลือกกระทู้ครับ


ขั้นที่สอง! มั่ว .htaccess ทำ Mod_Rewrite ครับ
เพิ่มไฟล์ .htaccess ไว้ที่ root โฟลเดอร์
ในที่นี้ก็คือ -> C:\AppServ\www\Lab\SMF\.htaccess

ผมลองเขียนเนื้อหาไปว่า
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^board/(\d+)-.+\.html index.php?board=$1 [L]
RewriteRule ^topic/(.+?)-.+\.html index.php?topic=$1 [L]
</IfModule>

ลองมั่ว regexp เอานะครับ ผมพูดตรงๆ อีกแล้วว่า ผมมั่วมาคร้าบบบบ (เทพๆ อย่าแอบยิ้มนะครับผมอาย)

เรามาลอง url โดยการพิมพ์เข้าไปที่ address bar ครับ แบบในรูปเลยครับ
(http://upic.me/i/77/v6fn1.jpg)

(http://upic.me/i/gm/pco02.jpg)
ปรากฏว่าหน้าเข้าบอร์ดเปลี่ยนไปตามที่คำนวณมาอย่างเนิ่นนาน หึๆ (แล้วตะกี้ใครมันว่ามั่ว(วะ))
ลอง url ของหน้ากระทู้บ้างครับ
(http://upic.me/i/lp/jh163.jpg)

(http://upic.me/i/ik/3n924.jpg)

เข้ามาได้ครับ! เป็นอันว่าการออกแบบ url ผ่านครับ!!
(ในส่วนการออกแบบ url ท่านเอาไปประยุกต์ต่อได้เองตามสบายเลยครับ ต้องฝึกแก้ mod_rewrite แค่นั้นเอง)

*Note: บางท่านอาจจะสังเกตุเห็นแล้วว่า คีย์จริงๆ ของการ mod_rewrite แบบนี้ก็คือเลขที่อยู่ข้างหน้ากระทู้เองครับ! (กับต้องลงท้ายด้วย .html)
ไอตรงส่วนข้อความ ไม่ได้เอามาคิดอะไรเลย! เป็นคำพูดหลอกๆ ให้รู้ว่าลิ้งนั่นเกี่ยวกับอะไรเฉยๆ ตัวประมวลผลจริงๆ คือเลขครับ
bbslab/board/1-General-Discuzz.html หากท่านเปลี่ยนเป็น bbslab/board/1-อ็อด-อ็อด.html ก็ยังคงเข้าได้ครับ (เลข 1 เหมือนเดิม ลงด้วย .html เหมือนเดิม)

ต่อเนื่องนะครับ ขั้นตอนที่ 3!
ขั้นตอนที่เหลืออยู่มีเพียงแค่ว่า เราจะต้องแก้ลิ้งที่แสดงในเว็บบอร์ด จากเดิมที่เป็น ?board=xx, ?topic=xx ให้เป็นในฟอแมทของเรา
ก่อนอื่นเราต้องไปเคลียร์ url หน้าแรกของบอร์ดก่อนครับ! ให้เราเปิด Sources/QueryString.php (ในที่นี้จะอยู่ตำแหน่ง C:\AppServ\www\Lab\SMF\Sources\QueryString.php)
ค้นหา -> $scripturl = $boardurl . '/index.php';
แล้วแก้ไขเป็น -> $scripturl = $boardurl . '/';

ต่อมาเริ่มจากหน้าแรกบอร์ดครับ ต้องแก้ที่ไฟล์ Sources/BoardIndex.php (ในที่นี้จะอยู่ตำแหน่ง C:\AppServ\www\Lab\SMF\Sources\BoardIndex.php)
ค้นหา -> $this_category[$row_board['ID_BOARD']] = array(
ค้นมาเรื่อยๆ จะเจอ
'href' => $scripturl . '?board=' . $row_board['ID_BOARD'] . '.0',
'link' => '<a href="' . $scripturl . '?board=' . $row_board['ID_BOARD'] . '.0">' . $row_board['boardName'] . '</a>'
ก็ให้แก้ไขเป็น
'href' => $scripturl . 'board/' . $row_board['ID_BOARD'] . '-' . $row_board['boardName'] . '.html',
'link' => '<a href="' . $scripturl . 'board/' . $row_board['ID_BOARD'] . '-' . $row_board['boardName'] . '.html">' . $row_board['boardName'] . '</a>'

ต่อมา ค้นหา -> $this_category[$row_board['ID_PARENT']]['children'][$row_board['ID_BOARD']] = array(
จะเจอเหมือนข้างบนเลยครับ แล้วก็แก้ด้วยวิธีเดียวกัน

มีขอระวังเล็กน้อยก็คือว่า ท่านต้องสังเกตุนะครับว่า 'link' ที่ท่านกำลังแก้ มันเป็นของ Board หรือ Topic หรือ User!
แล้วดูยังไง ?
'href' => $scripturl . '?board=' . $row_board['ID_BOARD'] . '.0', <--- ของบอร์ดชัดเลยครับ (?board=)
ในส่วนนี้ให้ท่านแก้แค่บอร์ดก่อนครับ ตามวิธีการด้านบน อย่าเพิ่งเก่งแก้ topic ด้วยครับ

พอแก้หมดแล้วลองรีเฟรชบอร์ด แล้วทดสอบดูครับ ดังรูป
(http://upic.me/i/7z/ndp85.jpg)

(http://upic.me/i/6b/5eu96.jpg)
พบว่า url เปลี่ยนไปแล้ว ก็ลองคลิกๆ ดูครับ เข้าได้จริงไหม!

ขั้นตอนนี้ เอาให้เคลียก่อนนะครับ !!

ต่อมาเราจะแก้ของ Topic ครับ โดยยังยึดที่ไฟล์เดิมครับ BoardIndex.php
คราวนี้ค้นหา ->
?topic=
จะเจอ
$this_last_post['href'] = $scripturl . '?topic=' . $row_board['ID_TOPIC'] . '.msg' . ($user_info['is_guest'] ? $modSettings['maxMsgID'] : $row_board['new_from']) . (empty($row_board['isRead']) ? ';boardseen' : '') . '#new';

ก็แก้เป็น
$this_last_post['href'] = $scripturl . 'topic/' . $row_board['ID_TOPIC'] . '.msg' . ($user_info['is_guest'] ? $modSettings['maxMsgID'] : $row_board['new_from']) . (empty($row_board['isRead']) ? ';boardseen' : '') . '-'.$row_board['short_subject'].'.html#new';

ผมเปลี่ยน ?topic= เป็น topic/ แล้วก็เติม '-'.$row_board['short_subject'].'.html#new'; เพื่อสร้าง title ต่อท้ายเลข 1 แล้วก็ปิดด้วย .html ตามสูตร

ค้นต่อไปคับ จะเจอ
$this_event['href'] = $this_event['topic'] == 0 ? '' : $scripturl . '?topic=' . $this_event['topic'] . '.0';

อันนี้ไม่สนใจครับ เป็นส่วยย่อยใน Calendar (ท่านจะทำก็ได้ แต่ผมไม่ทำคับ ขี้เกียจ -> เหตุผลง่ายไหมครับ)

หมดแล้วครับ สำหรับหน้าแรก ลองเปิดบอร์ดมาเลยครับ ลองกดๆ ดูว่าติดอะไรไหม ถ้าไม่ติดเราจะเข้าไปแก้อีกหน้านึงครับ (วิธีนี้แก้แค่ 2 หน้าก็พอครับ!)

--- หน้าแรกมันแค่เด็กๆ ครับ อีกหน้านึงอ้วกแน่!
คราวนี้มาแก้ที่ไฟล์ MessageIndex.php (ในที่นี้อยู่ที่ C:\AppServ\www\Lab\SMF\Sources\MessageIndex.php)

เราจะทำ Board ก่อนเหมือนเดิมนะครับ ค้นหา -> ?board=
(อันที่ผมไม่พูดถึง ผมไม่ทำนะครับ เราหวังผลเสียวอย่างเดียว ไม่ได้หวังเอาบอร์ดเทพ)

จนกว่าจะเจอ
'href' => $scripturl . '?board=' . $row_board['ID_BOARD'] . '.0',
'link' => '<a href="' . $scripturl . '?board=' . $row_board['ID_BOARD'] . '.0">' . $row_board['name'] . '</a>'

แก้ไขเป็น
'href' => $scripturl . 'board/' . $row_board['ID_BOARD'] . '-' . $row_board['name'] . '.html',
'link' => '<a href="' . $scripturl . 'board/' . $row_board['ID_BOARD'] . '-' . $row_board['name'] . '.html">' . $row_board['name'] . '</a>'

เจอ
'href' => $scripturl . '?board=' . $row['ID_BOARD'] . '.0',
'link' => '<a href="' . $scripturl . '?board=' . $row['ID_BOARD'] . '.0">' . $row['name'] . '</a>'

แก้ไขเป็น
'href' => $scripturl . 'board/' . $row['ID_BOARD'] . '-' . $row['name'] . '.html',
'link' => '<a href="' . $scripturl . 'board/' . $row['ID_BOARD'] . '-' . $row['name'] . '.html">' . $row['name'] . '</a>'

เจอ
$context['boards'][$row['ID_PARENT']]['link_children'][] = '<a href="' . $scripturl . '?board=' . $row['ID_BOARD'] . '.0">' . $row['name'] . '</a>';

แก้ไขเป็น
$context['boards'][$row['ID_PARENT']]['link_children'][] = '<a href="' . $scripturl . 'board/' . $row['ID_BOARD'] . '-'.$row['name'].'.html">' . $row['name'] . '</a>';

ที่แก้มาข้างบนจะใช้ในกรณีเป็น Child Board นะครับ - ช่างมันเถอะ

*****
ต่อมาค้นหา -> ?topic=
จนกว่าจะเจอ
'href' => $row_board['subject'] != '' ? $scripturl . '?topic=' . $row_board['ID_TOPIC'] . '.new' . (empty($row_board['isRead']) ? ';boardseen' : '') . '#new' : '',
'link' => $row_board['subject'] != '' ? '<a href="' . $scripturl . '?topic=' . $row_board['ID_TOPIC'] . '.new' . (empty($row_board['isRead']) ? ';boardseen' : '') . '#new" title="' . $row_board['subject'] . '">' . $short_subject . '</a>' : $txt[470]

แก้ไขเป็น
'href' => $row_board['subject'] != '' ? $scripturl . 'topic/' . $row_board['ID_TOPIC'] . '.new' . (empty($row_board['isRead']) ? ';boardseen' : '') . '-'.str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($short_subject)).'#new' : '',
'link' => $row_board['subject'] != '' ? '<a href="' . $scripturl . 'topic/' . $row_board['ID_TOPIC'] . '.new' . (empty($row_board['isRead']) ? ';boardseen' : '') . '-'.str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($short_subject)).'#new" title="' . $row_board['subject'] . '">' . $short_subject . '</a>' : $txt[470]

ค้นต่อไป จะเจอ
'href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . '.new' . (empty($row['isRead']) ? ';boardseen' : '') . '#new'

แก้ไขเป็น
'href' => $scripturl . 'topic/' . $row['ID_TOPIC'] . '.new' . (empty($row['isRead']) ? ';boardseen' : '') . '-'.str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($short_subject)).'.html#new'

ยังต่อเนื่อง
$tmppages[] = '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . '.' . $tmpb . '">' . $tmpa . '</a>';

แก้เป็น
$tmppages[] = '<a href="' . $scripturl . 'topic/' . $row['ID_TOPIC'] . '.' . $tmpb . '-'.str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($tmpa)).'.html">' . $tmpa . '</a>';

ค้นต่อปายยย
'href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . '.0',
'link' => '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . '.0">' . $row['firstSubject'] . '</a>'

แก้เป็น * (ตอนผมลองทำ หลังจากแก้ตรงนี้ url ก็ใช้ได้เลย -> การแก้ที่ผ่านๆ มาใช้ใน child board)
'href' => $scripturl . 'topic/' . $row['ID_TOPIC'] . '-' . str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($row['firstSubject'])) . '.html',
'link' => '<a href="' . $scripturl . 'topic/' . $row['ID_TOPIC'] . '-' . str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($row['firstSubject'])) . '.html">' . $row['firstSubject'] . '</a>'

ค้นอีก * (อันนี้เป็นแก้ลิ้ง "ข้อความสุดท้าย")
'href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . ($row['numReplies'] == 0 ? '.0' : '.msg' . $row['ID_LAST_MSG']) . '#new',
'link' => '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . ($row['numReplies'] == 0 ? '.0' : '.msg' . $row['ID_LAST_MSG']) . '#new">' . $row['lastSubject'] . '</a>'

แก้ไขเป็น
'href' => $scripturl . 'topic/' . $row['ID_TOPIC'] . ($row['numReplies'] == 0 ? '.0' : '.msg' . $row['ID_LAST_MSG']) . '-'.str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($row['lastSubject'])).'.html#new',
'link' => '<a href="' . $scripturl . 'topic/' . $row['ID_TOPIC'] . ($row['numReplies'] == 0 ? '.0' : '.msg' . $row['ID_LAST_MSG']) . '-'.str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($row['lastSubject'])).'.html#new">' . $row['lastSubject'] . '</a>'

ถึงจะใช้ได้แล้ว แต่ก็ยังค้นหาต่อไป (เผื่อมันไปติดกรณีไหนสักแห่ง -> อยากรู้ท่านต้องอ่าน Comment ครับ -> ผมขี้เกียจแปล -> ง่ายไหมครับ)
'new_href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . '.msg' . $row['new_from'] . '#new',

แก้ไขเป็น
'new_href' => $scripturl . 'topic/' . $row['ID_TOPIC'] . '.msg' . $row['new_from'] . '-'.str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim($row['firstSubject'])).'#new',

เป็นอันว่าเสร็จนะครับ!! อันที่จริงจะพบว่าแก้ไม่ยากเลยถ้าทำ .htaccess ออกมาได้แล้วก็อยู่ที่ขั้นตอนการแก้ไขธีมเท่านั้น
ว่าจะให้มันแสดงลิ้งยังไง ซึ้งส่วนนี้ลองแก้ดูเองได้ครับ! ดู Syntax ไม่ให้ Error แล้วก็ลองรีเฟรชดูเอาเลย ว่า url เป็นไปตามที่เราต้องการไหม!!

แค่นี้ก็ใช้ได้ในระดับหนึ่ง ผมขอทิ้งทวนไว้ให้ลองทำนะครับ
- แก้ "linktree" ให้แสดง url เป็น mod_rewrite
- แก้ subject ของ reply message เป็น subject หลักของ topic นั้นๆ
- ประยุกต์ใช้กับการแสดงรายละเอียด user ต่างๆ

ลองแก้ดูครับไม่ยาก ^^"

--
ขอลง Original Post ไว้หน่อยนะครับ ผมละกลัวจริงๆ ว่ามันจะกลายเป็นผมมาลอกข้อความจากไทยเสียว (ก็บอทแรงซะ :wanwan001:)
Original Post: http://www.lastwordz.net/blog/SMF-Simple-Mod-Rewrite.htm (http://www.lastwordz.net/blog/SMF-Simple-Mod-Rewrite.htm)
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: tapo ใน 05 มกราคม 2010, 12:27:14
ยังอ่านไม่จบ แต่ก็ขอ +1 ให้ก่อนในน้ำใจอันดีงามครับ  :wanwan003:
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: fusy_love ใน 05 มกราคม 2010, 12:44:53
ขอบคุณมากเลยครับ :wanwan017:
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: redbulls ใน 05 มกราคม 2010, 12:49:15
ของผมมีปัญหา คือ พอเว้นช่องว่าง มันจะเปงแบบนี้ครับ
โดย%20i18up.html
ทำไงถึงให้เว้นช่องว่าง แล้วไม่มี %20
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Reality ใน 05 มกราคม 2010, 12:52:33
ใช้ ฟังชันท์ trim() ครอบไว้ก็ได้ครับ
ตัวอย่าง

เจอ
'href' => $scripturl . '?board=' . $row['ID_BOARD'] . '.0',
'link' => '<a href="' . $scripturl . '?board=' . $row['ID_BOARD'] . '.0">' . $row['name'] . '</a>'

แก้ไขเป็น
'href' => $scripturl . 'board/' . $row['ID_BOARD'] . '-' . trim($row['name']) . '.html',
'link' => '<a href="' . $scripturl . 'board/' . $row['ID_BOARD'] . '-' . trim($row['name']) . '.html">' . $row['name'] . '</a>'

หรืออาจจะใช้ str_replace(' ', '-', $row['name']) ก็ได้ครับ ขออนุญาติตอบสั้นๆ ก่อน แล้วตอนเย็นจะหาข้อผิดพลาดให้ได้หมดครับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: maxph ใน 05 มกราคม 2010, 12:56:23
+1 ด้วยเช่นกันครับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: redbulls ใน 05 มกราคม 2010, 13:06:24
ขอลองก่อน +1 ให้เลยครับ เพราะผม หาวิธีแก้ มาตั้งแต่ปีที่แล้ว ยังไม่ได้.
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: amulet ใน 05 มกราคม 2010, 13:32:40
ถ้าเอาคำว่า board กับ topic ออกจะแหล่มมากเลยครับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: ก้ามปู ใน 05 มกราคม 2010, 13:36:59
ช่วยเขียน robot.txt กันไม่ให้ dup ให้เพื่อนๆหน่อยสิครับ เดี๋ยวเอาไปใช้ทั้งดุ้น เนื้อหาจะซ้ำกันทั้งเว็บได้
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Reality ใน 05 มกราคม 2010, 15:57:34
อ้างถึงจาก: redbulls ใน 05 มกราคม 2010, 12:49:15
ของผมมีปัญหา คือ พอเว้นช่องว่าง มันจะเปงแบบนี้ครับ
โดย%20i18up.html
ทำไงถึงให้เว้นช่องว่าง แล้วไม่มี %20
ผมแก้ปัญหาโดยการแทนช่องว่างด้วย - นะครับ เพราะถ้าปล่อยเป็นช่องว่างยังไงมันก็จะเข้ารหัสเองอัติโนมัติอยู่ดีเวลา GET (พฤติกรรมของ browser)
ใช้โค๊ดนี้ครับ
str_replace(array(' ', '#', '+', '?'), array('-', '-', '-', '-'), trim($row['name'], chr(160)." \t\n\r\0\x0B"))
**แก้ไขแล้วที่กระทู้แรกเลยนะครับ

อ้างถึงจาก: amulet ใน 05 มกราคม 2010, 13:32:40
ถ้าเอาคำว่า board กับ topic ออกจะแหล่มมากเลยครับ
แล้วแต่คุณจะดีไซน์ url นะครับ + แล้วแต่ความสามารถในการทำ .htaccess
ส่วนตัวที่ผมใช้ topic กับ board เพราะผมว่ามันแยกกันชัดเจนดี ดูแล้วรู้เรื่องว่าจะเข้ากระทู้ไหน..
แต่ไม่แน่ก็อาจหาวิธีดีไซน์ให้มันสั้นลง แต่ยังเสียวซี๊ด (ก็ยังคิดไม่ออก ต้องใช้ไปสักพักก่อนครับ)

อ้างถึงจาก: ก้ามปู ใน 05 มกราคม 2010, 13:36:59
ช่วยเขียน robot.txt กันไม่ให้ dup ให้เพื่อนๆหน่อยสิครับ เดี๋ยวเอาไปใช้ทั้งดุ้น เนื้อหาจะซ้ำกันทั้งเว็บได้
มัน dup ยังไงเหรอครับ ชื่อหัวข้อกระทู้หรืออะไรก็เป็นไปตามเนื้อหาของบอร์ดนั้นๆ ครับ อันนี้ไม่ค่อยเข้าใจครับ



สรุป ใครทดสอบแล้วไม่เวิร์ค, ติดอะไร ลองทิ้งคำถามไว้ครับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Putter™ ใน 05 มกราคม 2010, 23:41:59
+1 เลยครับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Putter™ ใน 06 มกราคม 2010, 00:07:12
ลงเสร็จแล้วครับ ผ่านไปได้ด้วยดีครับ

ตัวอย่างมาดูได้ตามลายเซ็นครับ


:wanwan020: :wanwan020: :wanwan020: :wanwan020:
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: expertduck ใน 06 มกราคม 2010, 00:16:59
แจ่มครับ  :wanwan016:

ปล. $url =  preg_replace('/[^a-z0-9ก-ฯ\-]*/si','-',$url); :wanwan020:

ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Reality ใน 06 มกราคม 2010, 00:17:46
ขอบคุณที่ช่วยหนุนคับ น้องรัก

พี่นึกว่าจะแป๊กซะแล้ว :wanwan004:


ตัวอย่างดูได้ที่ -> http://www.ruk-com.in.th/ นะครับ ท่านจะลองตั้งกระทู้ทดสอบก็แล้วแต่ครับ น้องผมบอกว่าเปิดให้ทดสอบเต็มที่ :wanwan002:
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Reality ใน 06 มกราคม 2010, 00:19:32
อ้างถึงจาก: expertduck ใน 06 มกราคม 2010, 00:16:59
แจ่มครับ  :wanwan016:

ปล. $url =  preg_replace('/[^a-z0-9ก-ฯ\-]*/si','-',$url); :wanwan020:


ขอบคุณครับ

อันนี้ท่านหมายถึงใช้ output buffering สุดท้ายมาใช้ใช่ไหมครับ


ผมไม่รู้ว่าความเร็วมันจะต่างกันไหมเนี้ยสิ :P
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: mastergtx ใน 06 มกราคม 2010, 01:01:39
Rewrite แบบดิบๆ หน้าสนใจเหมือนกัน
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Reality ใน 06 มกราคม 2010, 01:11:26
อ้างถึงจาก: mastergtx ใน 06 มกราคม 2010, 01:01:39
Rewrite แบบดิบๆ หน้าสนใจเหมือนกัน
มันจะมี rewrite แบบ pure อีกครับ (ในลิ้งจะไม่มีตัวเลข)

เพียงแต่ว่าถ้าเทียบความยาก/ง่ายแล้ว..
แบบนี้จะง่ายกว่าพอสมควรครับ แล้วประยุกต์ได้แล้วแต่ไอเดียผู้นำไปใช้เลย..

url จะยาวกว่าแบบ pure เล็กน้อย แต่ก็เสียวได้หนักเหมือนกันนะ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Nongkhai_tong ใน 06 มกราคม 2010, 03:49:43
ใช้ได้กับ smf 2.0 หรือเปล่าคตรับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: jiw ใน 06 มกราคม 2010, 03:57:37
ยังไม่อ่านจบเช่นกัน


บวกหนึ่ง ไปก่อน


ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Reality ใน 06 มกราคม 2010, 04:01:31
อ้างถึงจาก: Nongkhai_tong ใน 06 มกราคม 2010, 03:49:43
ใช้ได้กับ smf 2.0 หรือเปล่าคตรับ
น่าจะไม่ได้แน่นอนครับ

เพราะผมโมกับ SMF 1.1.11 (อัพเป็น 2 มันแก้ไขเยอะ)
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Putter™ ใน 06 มกราคม 2010, 05:02:17
อ้างถึงจาก: Luscentz ใน 06 มกราคม 2010, 00:17:46
ขอบคุณที่ช่วยหนุนคับ น้องรัก

พี่นึกว่าจะแป๊กซะแล้ว :wanwan004:


ตัวอย่างดูได้ที่ -> http://www.ruk-com.in.th/ นะครับ ท่านจะลองตั้งกระทู้ทดสอบก็แล้วแต่ครับ น้องผมบอกว่าเปิดให้ทดสอบเต็มที่ :wanwan002:


ผมไปบอกตอนไหมหว่า  :P :P
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: expertduck ใน 06 มกราคม 2010, 05:43:20
อ้างถึงจาก: Luscentz ใน 06 มกราคม 2010, 00:19:32
อ้างถึงจาก: expertduck ใน 06 มกราคม 2010, 00:16:59
แจ่มครับ  :wanwan016:

ปล. $url =  preg_replace('/[^a-z0-9ก-ฯ\-]*/si','-',$url); :wanwan020:


ขอบคุณครับ

อันนี้ท่านหมายถึงใช้ output buffering สุดท้ายมาใช้ใช่ไหมครับ


ผมไม่รู้ว่าความเร็วมันจะต่างกันไหมเนี้ยสิ :P
อ่าครับ คือหมายถึง replace ลิ้งค์อ่าครับ ให้เหลือเฉพาะ a-z 0-9 ตัวอักษรไทย และ - (Hyphen) ผมว่าน่าจะครอบคลุมกว่า เจาะจงไปเฉพาะ ตัวนั้นๆ
http://stackoverflow.com/questions/695438/safe-characters-for-friendly-url  :wanwan016: อันนี้ ตัวอักษรที่ปลอดภัย(ยังไงหว่า = =')

ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: nontavitz ใน 06 มกราคม 2010, 06:06:45
แหล่มมากครับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Reality ใน 06 มกราคม 2010, 08:37:58
อ้างถึงจาก: expertduck ใน 06 มกราคม 2010, 05:43:20
อ้างถึงจาก: Luscentz ใน 06 มกราคม 2010, 00:19:32
อ้างถึงจาก: expertduck ใน 06 มกราคม 2010, 00:16:59
แจ่มครับ  :wanwan016:

ปล. $url =  preg_replace('/[^a-z0-9ก-ฯ\-]*/si','-',$url); :wanwan020:


ขอบคุณครับ

อันนี้ท่านหมายถึงใช้ output buffering สุดท้ายมาใช้ใช่ไหมครับ


ผมไม่รู้ว่าความเร็วมันจะต่างกันไหมเนี้ยสิ :P
อ่าครับ คือหมายถึง replace ลิ้งค์อ่าครับ ให้เหลือเฉพาะ a-z 0-9 ตัวอักษรไทย และ - (Hyphen) ผมว่าน่าจะครอบคลุมกว่า เจาะจงไปเฉพาะ ตัวนั้นๆ
http://stackoverflow.com/questions/695438/safe-characters-for-friendly-url  :wanwan016: อันนี้ ตัวอักษรที่ปลอดภัย(ยังไงหว่า = =')


ขอบขุณอีกรอบครับ

แต่ผมใส่อินพุตเป็น abc มันรีเทิร์นมาเป็น -a-b-c- อ่าครับ ถ้ายังงี้ยังไม่ค่อยเวิร์คนะ(ผมว่า) :wanwan017:
ลองตัด - หน้าหลังแล้ว มันก็ยังติด - ระหว่างอักษณ จะตัดทั้งหมดเลยก็ไม่ดีบางทีบางอันมันเป็นช่องว่างก็น่าจะใส่ - ให้อ่านรู้เรื่อง
ละมั้งครับ :wanwan031:
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: expertduck ใน 06 มกราคม 2010, 22:39:29
งั้นลองนอันนี้ครับ (อันนี้ผมใช้จริงในเว็บ SMF2 )
function strip_seo($txt)
{
   //By:ExpertDuck
   
   $txt = html_entity_decode($txt,ENT_QUOTES,'UTF-8');
   $txt = str_replace(' ','-',urldecode(strtolower($txt)));
   //strip
   $txt = preg_replace('~[/_\s]~','-',$txt);
   $txt = preg_replace('~[^a-z0-9ก-๙\-]~u','',$txt);
   //remove dup
   $txt = preg_replace('~-+~u','-',$txt);
   //first/last char
   $txt = preg_replace('~(^-)|(-$)~u','',$txt);
   $txt = htmlentities($txt,ENT_QUOTES,'UTF-8');
   return urlencode($txt);
}
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: pizad_sura ใน 07 มกราคม 2010, 16:21:38
อ้างถึงจาก: expertduck ใน 06 มกราคม 2010, 22:39:29
งั้นลองนอันนี้ครับ (อันนี้ผมใช้จริงในเว็บ SMF2 )
function strip_seo($txt)
{
   //By:ExpertDuck
   
   $txt = html_entity_decode($txt,ENT_QUOTES,'UTF-8');
   $txt = str_replace(' ','-',urldecode(strtolower($txt)));
   //strip
   $txt = preg_replace('~[/_\s]~','-',$txt);
   $txt = preg_replace('~[^a-z0-9ก-๙\-]~u','',$txt);
   //remove dup
   $txt = preg_replace('~-+~u','-',$txt);
   //first/last char
   $txt = preg_replace('~(^-)|(-$)~u','',$txt);
   $txt = htmlentities($txt,ENT_QUOTES,'UTF-8');
   return urlencode($txt);
}

smf 2.0 เหรอครับครับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: xvlnw.com ใน 07 มกราคม 2010, 16:47:21
อ้างถึงผมแก้ที่ไฟล์ MessageIndex.php -> โดยการใส่
str_replace(array(' ', '#', '+', '?', '%'), array('-', '-', '-', '-', '-'), trim( -ตัวแปร- ))


ช่วยอธิบายวิธีการใส่ให้หน่อยนะครับ ว่าใส่ในส่วนไหนบ้าง บรรทัดที่เท่าไร อะไรประมาณนั้นครับ  เด็กใหม่ ยังหัดเล่นยู่ครับ
:wanwan031:
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: icegmza ใน 03 กันยายน 2011, 10:57:48
ทำไมผมทำแล้ว ขึ้นอย่างนี้ครับบ

เว็บผมเข้าไม่ได้เลย siam2bot.com

ขึ้นอย่างนี้

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.


--------------------------------------------------------------------------------

Apache/2 Server at siam2bot.com Port 80
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: Hanuman ใน 03 กันยายน 2011, 11:00:32
@icegmza เขียน .htaccess ผิดครับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: deknung ใน 24 กันยายน 2011, 00:01:05
ทำแล้วบอร์ดจะเข้าไม่ได้อะคับ แต่ topic เข้าได้คับ งงมาก แก้มาตั้งนานแล้วคับ
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: sawit ใน 24 กันยายน 2011, 00:50:39
ขอเก็บไว้ก่อน ยังมึนอยู่  :wanwan011:
ชื่อเรื่อง: Re: มาทำ Mod_Rewrite ใน SMF แบบง่ายๆ ครับ
โพสต์โดย: hotth ใน 13 พฤษภาคม 2013, 22:41:24
โอ้วๆถึงจะนานแล้วแต่ขอบอกว่าคุณหล่อมว้ากๆ