PART 1::::เขียน .htaccess แบบ ไฟล์เดียวครอบจักรวาล by Tee++;*

เริ่มโดย Tee++;, 16 ตุลาคม 2007, 00:43:46

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

Tee++;

ตอนแรกก็คิดๆ อยู่ว่าจะเขียนดีมั้ย เพราะคิดว่าคนอ่านคงมีอยู่หยิบมือเดียว แต่เอาวะไหนๆ ก็ไม่ได้โพสต์ ตั้งนาน ขอทำประโยชน์ซะหน่อย ถึงแม้จะมีคนหยิบมือเดียวที่สนใจ  :'(

หลายๆ คนคงรู้จักกับ mod_rewrite ซึ่งเป็น module ของ apache ซึ่งตัวนี้น่ะ มันมีประโยชน์ค่อนข้างมากในการทำ url friendly เพื่อให้ google รัก yahoo หลง

ซึ่งโปเกม่อน หลายคนอาจจะเขียนตรงๆ ไปเลยเช่น

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^tag\/([^\?].*)$ n5-tag.php?tag=$1 [L]


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

1. ไฟล์ .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]

RewriteRule ^(.*) index.php


จบแล้วครับไฟล์ .htaccess เราใช้แค่นี้ คือบอกมันว่า "ไม่ว่าจะเจออะไร พวกมรึง วิ่งมาที่ index.php ให้หมดเลยนะ ขอบใจ"

2. ไฟล์ common.inc.php

// 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

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 ต่างๆ ได้อีกเช่น

switch($uri[2]) {
    case 'addnew' :
        // do something
    break;
    default :
       // do somthing else
    break;
}


เท่านี้การเขียน .htaccess ของเราก้ไม่ยุ่งยากอีกแล้วจริงมั้ยครับ ^_^

PART 2::::เขียน .htaccess แบบ ไฟล์เดียวครอบจักรวาล by Tee++;
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]



thaizeal

ขอบคุณมากครับ
ยัง งงๆนิดๆเดี๋ยวลองพยายามอ่านอีกรอบ เผื่อฉลาดขึ้น ;D

pugkung


sunkoster

[direct=http://zfind.item69.com/]amazon advance search products[/direct] | [direct=http://zfind.item69.com/]amazon[/direct]

hurahura


mairoo

[direct=http://www.aceanj.org]health[/direct],[direct=http://www.ttt.com/]diet[/direct]

ball6847

We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

UnzO

ขอบคุณมากเลยครับ กำลังต้องใช้พอดี แต่ผมดูแล้ว มันไม่ยุ่งยากที่ .htaccess แต่ไปยุ่งยากที่ ไฟล์ n แทน (รึป่าวหว้า) :(

ปล. แบบว่ายังไม่เก่ง PHP เท่าไหร่  :P

L


barbies55

ขอบคุณมากค่ะ ขออ่านอีกสองสามรอบ แต่ได้ใช้แน่
รับทำเทมเพลท รับโมเทมเพลทให้เข้ากับสคริปต์ต่างๆ


On the Internet, Never One Know You are a Dog.
ผ้าขี้ริ้วห่อทองย่อมเป็นทองฉันใด เอาทองเปลวมาห่อขี้ก็ยังเป็นขี้ฉันนั้น

asemm


sealinda

ขอบคุณค่ะ

เข้ามาอ่าน ไม่งั้นเด๋วน้อยใจ หาว่ามีคนอ่านแค่หยิบมือเดียว  ;)

(แต่จะเข้าใจรึเปล่า มันคืออีกเรื่องนะ  :o )
[direct=http://www.thaiseoboard.com/index.php/topic,95911.msg1197898.html#msg1197898]รับบริจาคของขวัญ สำหรับงานวันเด็ก (ส.ที่ 9 ม.ค. 53 ที่บ้านราชวิถี)[/direct] |[direct=http://www.sealinda.com/]ขายส่งเีครื่องสำอางแบรนด์เนม[/direct] | [direct=http://www.girliza.com/]เทคนิคการแต่งหน้า&บำรุงผิว[/direct]|[direct=http://bookmark.girliza.com]บุ๊คมาร์คแซ่บๆ[/direct]

spiceday


forfin

ขอบคุณครับ

ขอเซฟเก็บไว้ก่อน ยังศึกษาไปไม่ถึงขั้นนั้นครับ PHPหัดคลาน  :-[

indyz

ขอบคุณครับ กำลังพยายามศึกษาอยู่ เพราะเขียนเองเจ๊งตลอด  >:(

tong4667

อ้างถึงจาก: forfin ใน 16 ตุลาคม 2007, 08:22:28
ขอบคุณครับ

ขอเซฟเก็บไว้ก่อน ยังศึกษาไปไม่ถึงขั้นนั้นครับ PHPหัดคลาน  :-[
:D

ลองๆๆๆๆๆๆๆๆๆ

CantonaX

 :o บอกตรงๆเลยครับ งง ฮ่าๆๆๆ
สงสัยฝีมือด้านโปรแกรมยังไม่ถึงขั้น หรือพัฒนาไปน้อยมาก ตามเด็กรุ่นหลังไม่ทันแล้ว อิอิ  :-[ :P

workshop

 :'( ถึงอ่านไม่รู้เรื่องแต่ก็ขอบคุณมากครับ :D