2010-01-08 70 views
-1

一個subdoamin在我的項目,我必須做一個子域,即如何biuld從腳本

如果用戶名是當他註冊XXX,子域名會像XXX.example.com

創建

該怎麼辦?

我將使用PHP進行腳本編寫。

問候

tarique

+0

已經回答了很多次:http://stackoverflow.com/search?q=create+subdomain+php – Gordon 2010-01-08 10:27:46

回答

1

我發現一個腳本,似乎做到了這一點,按需在您的服務器上創建一個子域。 它可能需要一點調整才能在您的特定控制面板上工作,但根據我的情況,審查是相當積極的。

Link

你有沒有使用htaccess以及URL重寫考慮? 發現這個代碼,可以幫助你:

# Rewrite <subdomain>.example.com/<path> to example.com/<subdomain>/<path> 
# 
# Skip rewrite if no hostname or if subdomain is www 
RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
# Extract (required) subdomain (%1), and first path element (%3), discard port number if present (%2) 
RewriteCond %{HTTP_HOST}<>%{REQUEST_URI} ^([^.]+)\.example\.com(:80)?<>/([^/]*) [NC] 
# Rewrite only when subdomain not equal to first path element (prevents mod_rewrite recursion) 
RewriteCond %1<>%3 !^(.*)<>\1$ [NC] 
# Rewrite to /subdomain/path 
RewriteRule ^(.*) /%1/$1 [L] 

Source (Post #6)

1

只要這對於非SSL站點,那麼最簡單的方法是不要打擾 - 只使用通配符DNS域和虛擬主機,然後映射任何域特定的行爲在您的PHP代碼。如果你需要SSL站點,那麼它更加複雜 - 你需要爲每個證書分配一個IP地址/端口 - 而woldcard證書可能非常昂貴。

如果你想建立某種形式的託管軟件包,那麼它會涉及更多一點 - 你如何去做這取決於你使用的是什麼網絡服務器和DNS服務器。

假設(再次沒有SSL)在Unix/POSIX/Linux上的Apache和綁定,然後,我再去一個通配符DNS條目,然後: 1)創建一個基地目錄爲網站,可選填充此使用默認的文件集 2)在/etc/httpd/conf.d中添加一個名爲XXX.conf的虛擬主機定義 3)向HTTPD進程發送一個kill -HUP(導致它讀取新的配置文件,而不必完全重新啓動)。

有一點需要注意的是,你真的不應該允許httpd進程直接寫訪問它自己的配置文件 - 你絕對不想給它root權限。一個更安全的解決方案是創建一個CLI腳本來使用用戶名作爲參數執行此操作,然後將其設置爲setuid並從HTTPD進程運行的腳本調用它。

C.

0

最好的辦法是在你的DNS服務器使用一個小丑:

www.example.com. IN A 1.2.3.4 
*.example.com. IN A 1.2.3.4 

通過這種方式,沒有子域名必須創建:所有的都指向默認同一IP 。

在你的PHP代碼,你就必須獲得$ _ SERVER [「HOST」],並得到了拳頭的一部分:

$hostParts=explode('.',$_SERVER["HTTP_HOST"]); 
$user=$hostParts[0] 
0

首先,你需要確保你有DNS通配符域設置,並確保你的web服務器(apache?)將該通配符域的所有查詢指向你的php文件。

然後在php中,您可以查看$ _SERVER [「HTTP_HOST」]以查看哪個子域用於該特定請求。

0

由於您將在用戶註冊時創建子域。 嘗試以此爲.htaccess文件:

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^.htaccess$ - [f] 

RewriteCond %{HTTP_HOST}!^www.domain.com 
RewriteCond %{HTTP_HOST} ^([^.]+).domain.com 
RewriteRule ^$(.*) /$1/%1 [L] 

使控制器,將採取分域的值,並顯示哪些必要的功能。 像::

public function show ($domain) 
{ 
    **.**..*..**.** Your code goes here 
} 

當用戶將嘗試這種xxx.domain.com/controller/show這將是domain.com/controller/show/xxx。如果你想xxx.domain.comdomain.com/controller/show/xxx只需編輯htaccess文件,只要你想。