June 29, 2006


如何使用一份程式碼,給多個站台使用以文找文


要實現這個功能要用到 apache 的 virtual host 的功能,先必需設定 apache 各個 virtual host 指到同一個目錄,然後再程式裡面判定是經由哪個 host 進來,再給不同的內容即可。



這邊主要說明 php 的部份怎麼作,在 php 裡面可以取得 $_SERVER 這個變數,其中裡面有 HTTP_HOST 這個變數,其內容就是你是經由哪個 DNS 連上該主機的。如果是像 *.example.com 這種 subdomain 的話,直接分析 * 是什麼,就代表這是不同的站台。





  • 首先要設定 wildcard DNS 就是把 *.example.com 指到同個網站。

  • 設定 apache 支援 wildcard DNS 和 virtual host




apache 的設定方法如下:
[coolcode]
NameVirtualHost *

ServerAdmin master@example.com
# 最重要的為以下二行
ServerName example.com
ServerAlias *.example.com
DocumentRoot /var/www/data/

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all


[/coolcode]



基本運作程式碼如下,讓其他的程式 include 此程式,這樣就可以取得 $site 了:
[coolcode lang="php"]
// 假設現在是用 *.example.com 作判定,用以下的程式就可以取出 site 是什麼了
global $site;
$site = explode(".",$_SERVER['HTTP_POST']);
$site = $site[0];
?>
[/coolcode]



目前 lyceum/lifetype 都是使用這種方法去判定是哪些站台,再從資料庫裡找出每個站台所需的資料顯示出來。



使用此方法,就可以用一份程式碼,顯示多重且不同風格的網站了。




Posted by at 天空部落 │15:06 │回應(1)引用(0)程式小心得
相關閱讀

引用URL

http://blog.yam.com/whatup/trackback/6213193
回應文章
其實應該是 $_SERVER['HTTP_HOST'] 吧?
Posted by 餅乾 at 2006-10-12 16:40:07