การเขียนโค้ดเล็กน้อยให้ URL Friendly ด้วย .htaccess ภาคที่ 1
หน้าแรก SEO การเขียนโค้ดเล็กน้อยให้ URL Friendly ด้วย .htaccess ภาคที่ 1
หลายๆ คนคงรู้จักกับ mod_rewrite ซึ่งเป็น module ของ apache ซึ่งตัวนี้น่ะ มันมีประโยชน์ค่อนข้างมากในการทำ url friendly เพื่อให้ google รัก yahoo หลง
ซึ่งโปเกม่อน หลายคนอาจจะเขียนตรงๆ ไปเลยเช่น
| Code |
| RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^tag/([^?].*)$ n5-tag.php?tag=$1 [L] |
แบบนี้ แล้วทีนี้ถ้าเวบเรามีขนาดใหญ่ module เป็นร้อยๆ ไฟล์ .htaccess ของรามีหวังยาวเป็น ร้อยๆ บรรทัดเป็นแน่ เอางี้ดีกว่าลองมาทำตามวิธีผม ไฟล์เดียวครอบจักรวาล
1. ไฟล์ .htaccess
| Code |
| RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+) - [PT,L] RewriteRule ^(.*) index.php |
จบแล้วครับไฟล์ .htaccess เราใช้แค่นี้ คือบอกมันว่า "ไม่ว่าจะเจออะไร วิ่งมาที่ index.php ให้หมดเลยนะ"
2. ไฟล์ common.inc.php
| Code |
// Relative path $conf['dir'] = str_replace('', '/', dirname(__FILE__)); // Absolute path $conf['path'] = "http://".$_SERVER['SERVER_NAME'].str_replace($_SERVER['DOCUMENT_ROOT'], '', $conf['dir']); // uri แบบที่ตัด root folder ออก $conf['uri'] = str_replace($conf['dir'].'/', '', $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']); // explode เพื่อตัดข้อมูลหลังจาก ? ออกไป list($xuri) = explode('?', $conf['uri'], 2); // explode เพื่อสร้าง array โดยการ แยก ที่ตำแหน่ง / $uri = explode("/", $xuri); |
ส่วนนี้เป็นการเอา absolute path มาแยกออกเป็น array เพื่อที่จะนำไปใช้
3. ไฟล์ index.php
| Code |
| require('common.inc.php'); // ถ้าไม่เจอข้อมูลอะไรให้เรียก home/ เป็น default $loadmodule = ($uri[0]) ? $uri[0] : 'home'; $inc = 'modules/'.$loadmodule; // เช็คดูว่าถ้ามี module นี้จริงๆ ให้ include เข้ามา if (is_dir($inc)) { include($inc.'/compile.php'); } |
ไฟล์เรียกใช้งานโดยมีการ inc common.inc.php เข้ามาใช้ ทีนี้เราก็สามารถเอา array ต่างๆ ไปเรียกใช้ได้ตามสะดวกแล้วครับ เช่น
http://www.domain.com/blog/tee/addnew
แบบนี้เราก็จะได้ array ออกมา 3 ชุดคือ
$uri[0] จะได้ blog
$uri[1] จะได้ tee
$uri[2] จะได้ addnew
ซึ่งพวกนี้เราสามารถนำไปใช้ใน เงื่อนไข ได้ตามปกติเลย เช่น
if ($uri[0] == 'blog') {
//load blog module
include('modules/blog/compile.php');
}
แล้วใน modules/blog/compile.php เรายังสามารถเรียก action ต่างๆ ได้อีกเช่น
| Code |
| switch($uri[2]) { case 'addnew' : // do something break; default : // do somthing else break; } |
ที่มา http://php.deeserver.net/webboard/odshow.php?No=38430&rep=6
ขึ้นไปด้านบน
