การเขียนโค้ดเล็กน้อยให้ 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

ขึ้นไปด้านบน