powerpc
Verified Seller
สมุนแก๊งเสียว
พลังน้ำใจ: 538
ออฟไลน์
กระทู้: 821
|
 |
« เมื่อ: 16 มิถุนายน 2012, 15:37:34 » |
|
อยากได้ระบบแบบนี้ คือ หลายโดเมน (หรือซับโดมน ซับไดเร็กทอรี่) หลายฐานข้อมูล แต่มีการใช้ file php ที่เดียว (ใน server เดียวกัน) เวลาเข้าแต่ละเว็บ ก็จะเป็น URL ของใครของมัน โดยไปเรียกใช้ไฟล์ php จากที่เดียว แต่ออกมาเป็นคนละเว็บ คิดได้ตอนนี้ คือ ใช้ .htacces ในแต่ละเว็บ เป็นตัวจัดการ แต่จะเขียนยังงัยยังไม่ออก ช่วยทีครับ ^^! 
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
|
|
solutioncom
Verified Seller
สมุนแก๊งเสียว
พลังน้ำใจ: 35
ออฟไลน์
กระทู้: 543
|
 |
« ตอบ #2 เมื่อ: 16 มิถุนายน 2012, 15:50:57 » |
|
Joomla ยังได้เลยครับ แต่เราต้องปรับโค้ดบางส่วนให้เป็นมัลติ ผมเรียกระบบนี้ว่า saas
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
powerpc
Verified Seller
สมุนแก๊งเสียว
พลังน้ำใจ: 538
ออฟไลน์
กระทู้: 821
|
 |
« ตอบ #3 เมื่อ: 16 มิถุนายน 2012, 15:54:10 » |
|
ระบบใช้ php ล้วน ๆ เลยครับ ไม่ใช้ framework อื่น ก็เลยต้องเขียนเองหมด
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
powerpc
Verified Seller
สมุนแก๊งเสียว
พลังน้ำใจ: 538
ออฟไลน์
กระทู้: 821
|
 |
« ตอบ #4 เมื่อ: 16 มิถุนายน 2012, 16:24:02 » |
|
คือคิดว่าจะใช้ htaccess รับ url มาแล้ว ส่งต่อ เหมือนทำ mod_rewrite แต่หลังจากนั้น ตัว php จะแยกอีกทีว่าจะไปดึงข้อมูลจาก db ไหนไปแสดง โดยอ้างจาก referer ของแต่ละเว็บ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
mixture
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 73
ออฟไลน์
กระทู้: 1,844
|
 |
« ตอบ #5 เมื่อ: 16 มิถุนายน 2012, 16:26:40 » |
|
ดึง url มาก่อน แล้วตัดเอาเหลือแต่ subdomain หลังจากนั้นก็เขียน function เช็คเอา
switch ($subdomain) { case 'art2': $db = 'db2' break; case 'www': $db = 'db1' break; default: $db = 'db1' }
เอาตัวแปรไปแทนที่ตอน connect db ต้องเขียนดักก่อนมีการ connect db ในโค๊ด
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
mixture
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 73
ออฟไลน์
กระทู้: 1,844
|
 |
« ตอบ #6 เมื่อ: 16 มิถุนายน 2012, 16:38:33 » |
|
อันบนไม่ได้ใช้ htaccess นะครับ แค่ดึง sub มาแยก db แยก template ถ้าเข้าใจผิดก็ขออภัยด้วยครับ 
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
solutioncom
Verified Seller
สมุนแก๊งเสียว
พลังน้ำใจ: 35
ออฟไลน์
กระทู้: 543
|
 |
« ตอบ #7 เมื่อ: 17 มิถุนายน 2012, 04:32:33 » |
|
php หน้าแรก ทำการเอา subdomain ไปเช็คใน db หลักที่เก็บค่า config connent db ต่างๆของ domain นั้นๆ เมื่อได้ค่าต่างๆมาก็ทำการ connect db ใหม่เพื่อนำมาใช้งาน พวกฟลอเดอร์อัพโหลดต่างๆ ควรจะสร้างเป็นชื่อตาม domian เช่น images_tester หรือ file_tester ส่วนพวก php ไฟล์ต่างๆ เราใช้ตัว config อยู่แล้ว แค่นี้ก็เป็น หลายโดเมน หลายดาตาเบส แต่ใช้ php ชุดเดียวกันครับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 103
ออฟไลน์
กระทู้: 1,312
|
 |
« ตอบ #8 เมื่อ: 17 มิถุนายน 2012, 14:08:02 » |
|
set wildcard ใน .htaccess แค่นั้นเอง ถ้าจะแยกเบส ก็ใช้ $_SERVER พวกเนี้ย แยกเอาชื่อ sub ออกมา ส่งค่าไป connect ตาม user แค่นั้นเอง ลักษณะพวกทำ mlm หรือ forward web อะ
ถ้าทำทั้ง server ผมจะ connect base ด้วยระดับ root เพื่ออ่านค่า table mysql มาใช้ connect สำหรับแยกเว็บ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
powerpc
Verified Seller
สมุนแก๊งเสียว
พลังน้ำใจ: 538
ออฟไลน์
กระทู้: 821
|
 |
« ตอบ #9 เมื่อ: 18 มิถุนายน 2012, 11:51:55 » |
|
ได้แล้วครับ ตอนนี้ใช้เป็น sub directory ไฟล์ .htacess ในแต่ละ sub directory <IfModule mod_rewrite.c> Options +FollowSymLinks
RewriteEngine On #RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) /mainfile/$1 [L] RewriteRule . /mainfile/index.php
</IfModule>
แล้วใน config ก็ใช้ $_SERVER['QUERY_STRING'] แยกเอา sub มาเพื่อเรียก db แต่ละก้อน
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
kobkung
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 103
ออฟไลน์
กระทู้: 1,312
|
 |
« ตอบ #10 เมื่อ: 18 มิถุนายน 2012, 12:00:05 » |
|
แยก htaccess ไว้ตาม sub คุณจะเหนื่อยเวลาแก้ไข ยกไว้ที่ root ไฟล์เดียวดีกว่าถ้าทำได้
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 493
ออฟไลน์
กระทู้: 5,905
|
 |
« ตอบ #11 เมื่อ: 18 มิถุนายน 2012, 12:09:27 » |
|
จากภาพผมแนะนำแบบนี้ครับ 1. ทำ Wildcard DNS 2. ไฟล์ index.php แพทหลัก ให้ดึงค่า URL มาเชคว่าเป็น Sub Domain หรือเป็น Homepage หลัก ถ้าเป็นซับจะทำอะไรต่อก็บรา ๆ ๆ โค๊ดเชค Sub Domain <?php
// SERVER_HOST define('_HOST',$_SERVER["HTTP_HOST"]); // domain.com, not http://
// Sub Domain Value $sub = preg_replace("/(\.)?(".str_replace('http://www.','',_BASE).")$/",'',_HOST);
?>
เอาไปใช้งาน <?php
if($sub == "www"){ # ------------------------------------------ [url=http://www.domain.com]www.domain.com[/url] ------------------------------------------# include "home.php"; // Main Panel }else if($sub == ""){ # ------------------------------------------ Redirect To [url=http://www.domain.com]www.domain.com[/url] ------------------------------------------# header ('HTTP/1.1 301 Moved Permanently'); header ('Location: ' . _BASE); // URL Home Page (Main Panel) }else{ // Sub Domain Processing Area /* --------------------------------------
Statement
------------------------------------------- */ } ?>
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
zidit
Verified Seller
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 314
ออฟไลน์
กระทู้: 7,543
|
 |
« ตอบ #12 เมื่อ: 18 มิถุนายน 2012, 13:58:20 » |
|
wpmu + multidb มันก็ใช้หลักกการเดียวกับที่ท่าน powerpc จะทำเลยปะครับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
war1ock
ก๊วนเสียว
พลังน้ำใจ: 4
ออฟไลน์
กระทู้: 283
|
 |
« ตอบ #13 เมื่อ: 20 มิถุนายน 2012, 11:17:38 » |
|
CI, Yii พวกนี้ทำได้นี่ครับ
ไม่ทราบว่าต้องทำยังไงเหรอครับ รบกวนอธิบายหรือ guide ให้หน่อยได้มั้ยครับพอดีเพิ่งหัดเขียนพวก Framework เลยไม่ค่อยเข้าใจเท่าไหร่
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
zalapaonet
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 87
ออฟไลน์
กระทู้: 1,229
|
 |
« ตอบ #14 เมื่อ: 20 มิถุนายน 2012, 11:25:44 » |
|
จากภาพผมแนะนำแบบนี้ครับ 1. ทำ Wildcard DNS 2. ไฟล์ index.php แพทหลัก ให้ดึงค่า URL มาเชคว่าเป็น Sub Domain หรือเป็น Homepage หลัก ถ้าเป็นซับจะทำอะไรต่อก็บรา ๆ ๆ โค๊ดเชค Sub Domain <?php
// SERVER_HOST define('_HOST',$_SERVER["HTTP_HOST"]); // domain.com, not http://
// Sub Domain Value $sub = preg_replace("/(\.)?(".str_replace('http://www.','',_BASE).")$/",'',_HOST);
?>
เอาไปใช้งาน <?php
if($sub == "www"){ # ------------------------------------------ [url=http://www.domain.com]www.domain.com[/url] ------------------------------------------# include "home.php"; // Main Panel }else if($sub == ""){ # ------------------------------------------ Redirect To [url=http://www.domain.com]www.domain.com[/url] ------------------------------------------# header ('HTTP/1.1 301 Moved Permanently'); header ('Location: ' . _BASE); // URL Home Page (Main Panel) }else{ // Sub Domain Processing Area /* --------------------------------------
Statement
------------------------------------------- */ } ?>
ถ้า hosting ให้จัดการ Wildcard DNS ได้ก้ใช้ตามนี้ครับ ถ้าไม่ได้ก็คงต้องอาศัยการทำ symbolic link บน server ให้วิ่งไปใช้ ไฟล์เดียวกัน แล้วมาใช้ โค้ดเช็คโดเมนเนม ตามด้านบนนี้ครับ
|
|
|
|
|
บันทึกการเข้า
|
|
|
|
|