延續前篇用會員帳號建立動態子網域的主機設定,接著要進行兩者對應所需的代碼修改。方法有二:其一,是用PHP或ASP等語言寫作子網域的判斷程式;另一個,則是增加轉址的正規表達法至.htaccess中。
子網域對應會員帳號的轉址程式及設定

方法一:在網站根目錄的index.php寫判斷程式

//取得子網域
$domain = $_SERVER['SERVER_NAME'];
$subdomain = substr($domain, 0, strpos($domain, '.'));

//判斷子網域是否存在於會員資料庫
$member_check = mysql_query("SELECT id FROM member_temp WHERE account= '".$subdomain ."'");

//如果存在,就轉到會員頁;沒有,就轉到網站首頁
if ($member_check) @header("location:user/index.php?account=".$subdomain);
else @header("location:home/index.php");

方法二:修改網站根目錄的.htaccess

//啟用網址覆寫
Options +FollowSymLinks
RewriteEngine On

//取出xx.com的子網域
RewriteCond %{HTTP_HOST} !^www.xx.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).xx.com$ [NC]

//轉址到對應的程式
RewriteRule ^$ /user/index.php?account=%2 [QSA,nc]

註:上述方法皆測試過可實行,但我也只是寫個初步導引;有需要做到會員子網域的網站系統,大多有其更細部的使用功能及流程,後續就好好各自努力囉


參考資料:
Wildcard DNS dynamic subdomain
VirtualHost Hacking with Wildcard DNS
Dynamic Sub-Domain with PHP
WMPU Subdomain rewriting with MAMP
Google : php dynamic add sub domain

 
  • Hemidemi
  • MyShare
  • Udn
  • funP
  • Furl