一個subdoamin在我的項目,我必須做一個子域,即如何biuld從腳本
如果用戶名是當他註冊XXX,子域名會像XXX.example.com
創建該怎麼辦?
我將使用PHP進行腳本編寫。
問候
tarique
一個subdoamin在我的項目,我必須做一個子域,即如何biuld從腳本
如果用戶名是當他註冊XXX,子域名會像XXX.example.com
創建該怎麼辦?
我將使用PHP進行腳本編寫。
問候
tarique
我發現一個腳本,似乎做到了這一點,按需在您的服務器上創建一個子域。 它可能需要一點調整才能在您的特定控制面板上工作,但根據我的情況,審查是相當積極的。
你有沒有使用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]
這可能是有點比你想象的更復雜。
我建議在mod重寫和htaccess上做一些閱讀。
你可以從這裏開始:
編輯:或者只是提供我的同胞,使用戶的很好的例子一氣呵成。 ;)
謝謝,我想我必須從頭開始研究它。 – tarique 2010-01-09 08:35:59
只要這對於非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.
最好的辦法是在你的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]
首先,你需要確保你有DNS通配符域設置,並確保你的web服務器(apache?)將該通配符域的所有查詢指向你的php文件。
然後在php中,您可以查看$ _SERVER [「HTTP_HOST」]以查看哪個子域用於該特定請求。
由於您將在用戶註冊時創建子域。 嘗試以此爲.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.com爲domain.com/controller/show/xxx只需編輯htaccess文件,只要你想。
已經回答了很多次:http://stackoverflow.com/search?q=create+subdomain+php – Gordon 2010-01-08 10:27:46