<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jQueryTips by Tee++; &#187; htaccess</title>
	<atom:link href="http://www.jquerytips.com/tag/htaccess/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jquerytips.com</link>
	<description>Coding is fun.</description>
	<lastBuildDate>Sun, 25 Apr 2010 11:30:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>การทำ URL Friendly ด้วย .htaccess ภาคที่ 2</title>
		<link>http://www.jquerytips.com/2008/04/07/htaccess-part-2/</link>
		<comments>http://www.jquerytips.com/2008/04/07/htaccess-part-2/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 15:47:37 +0000</pubDate>
		<dc:creator>Tee++;</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.jquerytips.com/2008/04/07/htaccess-part-2/</guid>
		<description><![CDATA[เอาละครับจากที่เขียน .htaccess ไฟล์เดียวทำงานได้หมด โดยการ get segment ซึ่งเป็นวิธีการเขียนให้ทุก url วิ่งเข้าหา index ทั้งหมดแล้วเอา segment มาใช้งาน
ทีนี้เราจะมาลองเขียนตรงข้าม คือ แทนที่จะเรียกทุก url เข้าหา index เราจะใช้การเขียน .htaccess เพื่อทำการ remove index ออกแทน เพื่อจะได้ url สวยๆ ลองมาดูกันเลยครับ
index.php



&#60;?php &#160;


&#160; &#160;//ตั้งค่า url ที่จะให้วิ่งหา ท่าจะแก้ต้องแก้ .htaccess ด้วย &#160;


&#160; &#160;$page_index = &#34;index.php&#34;; &#160; 


&#160; &#160;//หาค่า root folder ที่รันโปรแกรมออกมา &#160;


&#160; &#160;DEFINE&#40;&#8216;BASE&#8217;, preg_replace&#40;&#8216;#&#8217;.getenv&#40;&#8216;DOCUMENT_ROOT&#8217;&#41;.&#8216;#&#8217;, &#8221;, str_replace&#40;array&#40;&#8216;\\&#8216;, $page_index&#41;, array&#40;&#8216;/&#8217;, &#8221;&#41;, __FILE__&#41;&#41;&#41;; &#160;


&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>เอาละครับจากที่เขียน .htaccess ไฟล์เดียวทำงานได้หมด โดยการ get segment ซึ่งเป็นวิธีการเขียนให้ทุก url วิ่งเข้าหา index ทั้งหมดแล้วเอา segment มาใช้งาน</p>
<p>ทีนี้เราจะมาลองเขียนตรงข้าม คือ แทนที่จะเรียกทุก url เข้าหา index เราจะใช้การเขียน .htaccess เพื่อทำการ remove index ออกแทน เพื่อจะได้ url สวยๆ ลองมาดูกันเลยครับ<span id="more-26"></span></p>
<p>index.php</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//ตั้งค่า url ที่จะให้วิ่งหา ท่าจะแก้ต้องแก้ .htaccess ด้วย &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$page_index</span> = <span class="st0">&quot;index.php&quot;</span>; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//หาค่า root folder ที่รันโปรแกรมออกมา &nbsp;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<a href="http://www.php.net/define"><span class="kw3">DEFINE</span></a><span class="br0">&#40;</span><span class="st0">&#8216;BASE&#8217;</span>, <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st0">&#8216;#&#8217;</span>.<a href="http://www.php.net/getenv"><span class="kw3">getenv</span></a><span class="br0">&#40;</span><span class="st0">&#8216;DOCUMENT_ROOT&#8217;</span><span class="br0">&#41;</span>.<span class="st0">&#8216;#&#8217;</span>, <span class="st0">&#8221;</span>, <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\\</span>&#8216;</span>, <span class="re0">$page_index</span><span class="br0">&#41;</span>, <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;/&#8217;</span>, <span class="st0">&#8221;</span><span class="br0">&#41;</span>, <span class="kw2">__FILE__</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//เอาค่า root folder ไป replace กับ uri ทั้งหมดที่ get ได้ </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<a href="http://www.php.net/define"><span class="kw3">DEFINE</span></a><span class="br0">&#40;</span><span class="st0">&#8216;TAILER&#8217;</span>, <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st0">&#8216;#&#8217;</span>.BASE.<span class="st0">&#8216;#&#8217;</span>, <span class="st0">&#8221;</span>, <a href="http://www.php.net/getenv"><span class="kw3">getenv</span></a><span class="br0">&#40;</span><span class="st0">&#8216;REQUEST_URI&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//แยก path กับ query string ออกมาใช้งาน </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$parse_url</span> = <a href="http://www.php.net/parse_url"><span class="kw3">parse_url</span></a><span class="br0">&#40;</span>TAILER<span class="br0">&#41;</span>; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="co1">//explode url ที่ตำแหน่ง / เพื่อกำหนด segment </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$uri</span> = <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;/&quot;</span>, <span class="re0">$parse_url</span><span class="br0">&#91;</span><span class="st0">&#8216;path&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//parse ค่าของ query string เพื่อให้กลับมาใช้งานได้ตามปกติ </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<a href="http://www.php.net/parse_str"><span class="kw3">parse_str</span></a><span class="br0">&#40;</span><span class="re0">$parse_url</span><span class="br0">&#91;</span><span class="st0">&#8216;query&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//ทดสอบ print segment แต่ละตำแหน่งออกมา </span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;&lt;pre&gt;&quot;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;&lt;pre&gt;&quot;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//ทดสอบว่า query string ใช้งานได้ตามปกติ </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;&lt;hr /&gt;&quot;</span>; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;&lt;strong&gt;Author:&lt;/strong&gt; &quot;</span>.<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&#8216;author&#8217;</span><span class="br0">&#93;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">?&gt;</span> &nbsp;</div>
</li>
</ol>
</div>
<p>.htaccess</p>
<p>   <code> RewriteEngine on<br />
    RewriteCond $1 !^(index\.php|images)<br />
    RewriteRule ^(.*)$ index.php/$1 [L]  </code></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
ตามตัวอย่างข้างบนถ้าผมลองเขียน url แบบนี้</p>
<p>http://www.localhost.com/book/computer/seo_friendly?author=Tee</p>
<p>ตำแหน่งของ segment ที่ผมจะได้ก็คือ</p>
<p>segment ที่ 0 = book<br />
segment ที่ 1 = computer<br />
segment ที่ 2 = seo_friendly</p>
<p>โดยที่ query string ผมก้ยังให้ค่าตามปกติคือ</p>
<p>$author จะให้ค่า Tee ออกมา</p>
<p>เท่านี้เองก็จะได้ url สวยๆ แบบง่ายๆ แล้ว<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
การประยุกต์เพื่อการใช้งาน</p>
<p>สมมุติเราทำตามข้างบนเสร็จแล้ว url จะวิ่งเข้าไปที่  index.php หมดเลย ซึ่งตามปกติ segment ต่างๆควรจะเรียงตามนี้ครับ</p>
<p>$uri[0] = include and new opj<br />
$url[1] = method<br />
$url[2] or more = parameters</p>
<p>เช่น</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> <span class="kw2">&lt;?php</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/file_exists"><span class="kw3">file_exists</span></a><span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="co1">//include ไฟล์ที่มี class ของ module นี้เข้ามา &nbsp;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw1">require_once</span><span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/class_exists"><span class="kw3">class_exists</span></a><span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//สร้าง new object &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$obj</span> = <span class="kw2">new</span> <span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>; &nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/method_exists"><span class="kw3">method_exists</span></a><span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//slice class กับ method ออกไป &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$uri_slice</span> = <a href="http://www.php.net/array_slice"><span class="kw3">array_slice</span></a><span class="br0">&#40;</span><span class="re0">$uri</span>, <span class="nu0">2</span><span class="br0">&#41;</span>; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$params</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//จับ uri ตั้งแต่ segment ที่ 2 มา merge ใน array (เพราะ 0 กับ 1 คือ class กับ method ที่เอาออกไปแล้ว) &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$params</span> = <a href="http://www.php.net/array_merge"><span class="kw3">array_merge</span></a><span class="br0">&#40;</span><span class="re0">$params</span>, <span class="re0">$uri_slice</span><span class="br0">&#41;</span>; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//เรียก method ใน object รวมทั้งส่ง parameters ที่เป็น array ไปด้วย (ถ้ามี) &nbsp;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$obj</span>-&gt;<span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#40;</span><span class="re0">$params</span><span class="br0">&#41;</span>; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">?&gt;</span> &nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>แต่ถ้าไม่ถนัดการเขียนโคดแบบ oop ก็ใช้วิธีง่ายๆคือ</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp; &nbsp;<span class="kw2">&lt;?php</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> == <span class="st0">&#8216;module&#8217;</span><span class="br0">&#41;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">require_once</span><span class="br0">&#40;</span><span class="st0">&#8216;module.php&#8217;</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">?&gt;</span> &nbsp;</div>
</li>
</ol>
</div>
<p>แล้วไปทำงานต่อใน module.php เช่น</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp;<span class="kw2">&lt;?php</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> == <span class="st0">&#8216;addnew&#8217;</span><span class="br0">&#41;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="co1">//โคดโลด &nbsp;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">?&gt;</span> &nbsp;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jquerytips.com/2008/04/07/htaccess-part-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>การทำ URL Friendly ด้วย .htaccess ภาคที่ 1</title>
		<link>http://www.jquerytips.com/2008/04/07/htaccess-part-1/</link>
		<comments>http://www.jquerytips.com/2008/04/07/htaccess-part-1/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 15:42:25 +0000</pubDate>
		<dc:creator>Tee++;</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.jquerytips.com/2008/04/07/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%97%e0%b8%b3-url-friendly-%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-htaccess-%e0%b8%a0%e0%b8%b2%e0%b8%84%e0%b8%97%e0%b8%b5%e0%b9%88-1/</guid>
		<description><![CDATA[หลายๆ คนคงรู้จักกับ mod_rewrite ซึ่งเป็น module ของ apache ซึ่งตัวนี้น่ะ มันมีประโยชน์ค่อนข้างมากในการทำ url friendly เพื่อให้ google รัก yahoo หลง
ซึ่งโปเกม่อน หลายคนอาจจะเขียนตรงๆ ไปเลยเช่น



&#160;


&#160; &#160;1. RewriteCond %&#123;REQUEST_FILENAME&#125; !-f &#160;


&#160; &#160;2. RewriteCond %&#123;REQUEST_FILENAME&#125; !-d &#160;


&#160; &#160;3. RewriteRule ^tag\/&#40;&#91;^\?&#93;.*&#41;$ n5-tag.php?tag=$1 &#91;L&#93; &#160;


&#160;



แบบนี้ แล้วทีนี้ถ้าเวบเรามีขนาดใหญ่ module เป็นร้อยๆ ไฟล์ .htaccess ของรามีหวังยาวเป็น ร้อยๆ บรรทัดเป็นแน่ เอางี้ดีกว่าลองมาทำตามวิธีผม ไฟล์เดียวครอบจักรวาล
1. ไฟล์ .htaccess



 &#160; 1. RewriteEngine On &#160;


&#160; &#160;2. RewriteCond %&#123;REQUEST_FILENAME&#125; -f [...]]]></description>
			<content:encoded><![CDATA[<p>หลายๆ คนคงรู้จักกับ mod_rewrite ซึ่งเป็น module ของ apache ซึ่งตัวนี้น่ะ มันมีประโยชน์ค่อนข้างมากในการทำ url friendly เพื่อให้ google รัก yahoo หลง</p>
<p>ซึ่งโปเกม่อน หลายคนอาจจะเขียนตรงๆ ไปเลยเช่น</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">1</span>. RewriteCond %<span class="br0">&#123;</span>REQUEST_FILENAME<span class="br0">&#125;</span> !-f &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">2</span>. RewriteCond %<span class="br0">&#123;</span>REQUEST_FILENAME<span class="br0">&#125;</span> !-d &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">3</span>. RewriteRule ^tag\/<span class="br0">&#40;</span><span class="br0">&#91;</span>^\?<span class="br0">&#93;</span>.*<span class="br0">&#41;</span>$ n5-tag.php?tag=$<span class="nu0">1</span> <span class="br0">&#91;</span>L<span class="br0">&#93;</span> &nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>แบบนี้ แล้วทีนี้ถ้าเวบเรามีขนาดใหญ่ module เป็นร้อยๆ ไฟล์ .htaccess ของรามีหวังยาวเป็น ร้อยๆ บรรทัดเป็นแน่ เอางี้ดีกว่าลองมาทำตามวิธีผม ไฟล์เดียวครอบจักรวาล<span id="more-25"></span></p>
<p>1. ไฟล์ .htaccess</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp; <span class="nu0">1</span>. RewriteEngine On &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">2</span>. RewriteCond %<span class="br0">&#123;</span>REQUEST_FILENAME<span class="br0">&#125;</span> -f <span class="br0">&#91;</span>OR<span class="br0">&#93;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">3</span>. RewriteCond %<span class="br0">&#123;</span>REQUEST_FILENAME<span class="br0">&#125;</span> -d &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">4</span>. RewriteRule ^<span class="br0">&#40;</span>.+<span class="br0">&#41;</span> &#8211; <span class="br0">&#91;</span>PT,L<span class="br0">&#93;</span> &nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="nu0">5</span>. RewriteRule ^<span class="br0">&#40;</span>.*<span class="br0">&#41;</span> index.php &nbsp;</div>
</li>
</ol>
</div>
<p>จบแล้วครับไฟล์ .htaccess เราใช้แค่นี้ คือบอกมันว่า &#8220;ไม่ว่าจะเจออะไร วิ่งมาที่ index.php ให้หมดเลยนะ&#8221;</p>
<p>2. ไฟล์ common.inc.php</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp; <span class="nu0">1</span>. <span class="co1">// Relative path &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">2</span>. <span class="re0">$conf</span><span class="br0">&#91;</span><span class="st0">&#8216;dir&#8217;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\\</span>&#8216;</span>, <span class="st0">&#8216;/&#8217;</span>, <a href="http://www.php.net/dirname"><span class="kw3">dirname</span></a><span class="br0">&#40;</span><span class="kw2">__FILE__</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">3</span>. <span class="co1">// Absolute path </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">4</span>. <span class="re0">$conf</span><span class="br0">&#91;</span><span class="st0">&#8216;path&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;http://&quot;</span>.<span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;SERVER_NAME&#8217;</span><span class="br0">&#93;</span>.<a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;DOCUMENT_ROOT&#8217;</span><span class="br0">&#93;</span>, <span class="st0">&#8221;</span>, <span class="re0">$conf</span><span class="br0">&#91;</span><span class="st0">&#8216;dir&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="nu0">5</span>. <span class="co1">// uri แบบที่ตัด root folder ออก </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">6</span>. <span class="re0">$conf</span><span class="br0">&#91;</span><span class="st0">&#8216;uri&#8217;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="re0">$conf</span><span class="br0">&#91;</span><span class="st0">&#8216;dir&#8217;</span><span class="br0">&#93;</span>.<span class="st0">&#8216;/&#8217;</span>, <span class="st0">&#8221;</span>, <span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;DOCUMENT_ROOT&#8217;</span><span class="br0">&#93;</span>.<span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;REQUEST_URI&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">7</span>. <span class="co1">// explode เพื่อตัดข้อมูลหลังจาก ? ออกไป </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">8</span>. <a href="http://www.php.net/list"><span class="kw3">list</span></a><span class="br0">&#40;</span><span class="re0">$xuri</span><span class="br0">&#41;</span> = <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&#8216;?&#8217;</span>, <span class="re0">$conf</span><span class="br0">&#91;</span><span class="st0">&#8216;uri&#8217;</span><span class="br0">&#93;</span>, <span class="nu0">2</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">9</span>. <span class="co1">// explode เพื่อสร้าง array โดยการ แยก ที่ตำแหน่ง / &nbsp;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="nu0">10</span>. <span class="re0">$uri</span> = <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;/&quot;</span>, <span class="re0">$xuri</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
</ol>
</div>
<p>ส่วนนี้เป็นการเอา absolute path มาแยกออกเป็น array เพื่อที่จะนำไปใช้</p>
<p>3. ไฟล์ index.php</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp; <span class="nu0">1</span>. <span class="kw1">require</span><span class="br0">&#40;</span><span class="st0">&#8216;common.inc.php&#8217;</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">2</span>. <span class="co1">// ถ้าไม่เจอข้อมูลอะไรให้เรียก home/ เป็น default &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">3</span>. <span class="re0">$loadmodule</span> = <span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span> ? <span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> : <span class="st0">&#8216;home&#8217;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">4</span>. <span class="re0">$inc</span> = <span class="st0">&#8216;modules/&#8217;</span>.<span class="re0">$loadmodule</span>; &nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="nu0">5</span>. <span class="co1">// เช็คดูว่าถ้ามี module นี้จริงๆ ให้ include เข้ามา &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">6</span>. <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/is_dir"><span class="kw3">is_dir</span></a><span class="br0">&#40;</span><span class="re0">$inc</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">7</span>. &nbsp; &nbsp; <span class="kw1">include</span><span class="br0">&#40;</span><span class="re0">$inc</span>.<span class="st0">&#8216;/compile.php&#8217;</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">8</span>. <span class="br0">&#125;</span> &nbsp;</div>
</li>
</ol>
</div>
<p>ไฟล์เรียกใช้งานโดยมีการ inc common.inc.php เข้ามาใช้ ทีนี้เราก็สามารถเอา array ต่างๆ ไปเรียกใช้ได้ตามสะดวกแล้วครับ เช่น</p>
<p>http://www.domain.com/blog/tee/addnew</p>
<p>แบบนี้เราก็จะได้ array ออกมา 3 ชุดคือ</p>
<p>$uri[0] จะได้ blog<br />
$uri[1] จะได้ tee<br />
$uri[2] จะได้ addnew</p>
<p>ซึ่งพวกนี้เราสามารถนำไปใช้ใน เงื่อนไข ได้ตามปกติเลย เช่น</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp; <span class="nu0">1</span>. <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> == <span class="st0">&#8216;blog&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">2</span>. &nbsp; &nbsp; <span class="co1">//load blog module &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">3</span>. &nbsp; &nbsp; <span class="kw1">include</span><span class="br0">&#40;</span><span class="st0">&#8216;modules/blog/compile.php&#8217;</span><span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">4</span>. <span class="br0">&#125;</span> &nbsp;</div>
</li>
</ol>
</div>
<p>เรายังสามารถเรียก action ต่างๆ ได้อีกเช่น</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp; <span class="nu0">1</span>. <span class="kw1">switch</span><span class="br0">&#40;</span><span class="re0">$uri</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">2</span>. &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&#8216;addnew&#8217;</span> : &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">3</span>. &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// do something &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">4</span>. &nbsp; &nbsp; <span class="kw1">break</span>; &nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="nu0">5</span>. &nbsp; &nbsp; <span class="kw2">default</span> : &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">6</span>. &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// do somthing else &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">7</span>. &nbsp; &nbsp; <span class="kw1">break</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="nu0">8</span>. <span class="br0">&#125;</span> &nbsp;</div>
</li>
</ol>
</div>
<p>จบแล้วครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jquerytips.com/2008/04/07/htaccess-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
