2010-02-03 159 views
9

註冊Blogger或WordPress時,可以獲得他們自己的子域,該子域立即生效。考慮到我擁有自己的VPS/VDS /專用服務器,我該如何實現這一目標?動態創建子域

+0

精彩的問題。我從來不知道這是可能的。 – 2017-04-01 10:35:21

回答

10

一言以蔽之:

  1. 創建DNS通配符域(即解決whatever.yourdomain.example返回你的IP),
  2. 在Web服務器中創建一個默認的虛擬主機和
  3. 檢查應用程序中的URL。

如何做到這一點取決於您使用的是什麼技術。讓我給你一些例子:

  1. 如何建立一個通配符域in BINDin Windows Server DNS
  2. 要創建默認虛擬主機,只需在IIS中創建沒有主機條目的Web服務器。在Apache中,配置文件中列出的第一個虛擬主機將成爲默認主機。或者(b)你可以(a)根據域重寫URL(例如,將子域轉換爲URL中的參數example for ASP.NET,Apache的例子mod_rewrite:Link1,Link2),或者(b)查看URL的主機部分(例如,ASP.NET中的Request.Url)。

加入由bortzmeyer(對不起,覆蓋你的編輯,有編輯衝突):

的語法通配符,在平時的DNS區域文件格式(在RFC 1035中描述和實現在BIND,NSD也可以是其他人)是一個明星:

* IN A 198.51.100.3 
+0

+1感謝Heinzi。你能否詳細說明並舉例說明?非常感謝你的幫助! – Viet 2010-02-03 07:45:19

+1

@Viet:我已經延長了答案。如果您需要更多信息(例如關於某些特定技術),請詢問。 – Heinzi 2010-02-03 08:05:54

+0

+1 Thanks Heinzi&bortzmeyer !!我可以有第3號爲Apache 2.2澄清?非常感謝! – Viet 2010-02-03 08:09:16

2

對於那些,誰是外行到這一切的A和CNAME的東西,有一個非常簡單的解決方案,並與虛擬主機的工作原理:

只要到您的cPanel,並添加子站點*

例如,如果您的域名被稱爲abc.com,您可以添加*選擇/進入子目錄作爲根到此。保存時,它會將* .abc.com添加到您的子域表中,並將所有必需的A記錄添加到您的區域文件中。

當您在瀏覽器中點擊「任何」.abc.com時,服務器會將您置於指定位置(您提到的子目錄)。

此外,要處理特定重定向的所有(任何)子域,您可以在該子目錄中使用.htaccess來處理所有傳入的子域請求。

一個工作htaccess的例子如下:

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(^.*)\.abc\.com 
RewriteRule (.*) handler.php?user=%1&%{QUERY_STRING} 

</IfModule> 

的handler.php(下面的代碼)簡單地顯示與子域名歡迎消息並在URL所有查詢字符串:

$user = $_REQUEST["user"]; 
print_r($_REQUEST); 
echo "Welcome {$user}"; 

希望這會有所幫助。

+0

+1謝謝Waquas。會嘗試 :) – Viet 2012-12-03 00:41:09