2012-06-08 27 views
0

我想在我的網站上實現一個博客,其用戶名爲user1.domain.com這樣的子域名。
我讀過一堆這是提到DNS創建一個A記錄類似下面的文章:當我們可以通過httpd.conf完成時,爲什麼我們應該爲子域創建DNS記錄?

*.domain.com A 127.0.0.1 ;OR you site ip address 

然後使用的.htaccess從子域名請求重定向到您的服務器的文件夾。

但我發現另一種方法是,據說只需要修改如下httpd.conf文件:

<VirtualHost *:80> 
     DocumentRoot /abs/path/to/webroot 
     ServerName domainname.com 
     ServerAlias *.domainname.com 
     <Directory /abs/path/to/webroot> 
       AllowOverride All 
       Order allow,deny 
       Allow from all 
     </Directory> 
</VirtualHost> 

然後通過$_SERVER['HTTP_HOST']檢索子域。 問題是爲什麼有人應該使用htaccess並對Apache施加壓力並創建一個DNS記錄,當我們可以在httpd.conf中做一個簡單的事情如ServerAlias *.domainname.com
我很欣賞您的意見。

回答

2

您需要設置通配符DNS記錄並在httpd.conf中配置服務器別名以啓用託管任意子域。他們配置完全不同的東西。

添加通配符DNS記錄是允許客戶端確定您的子域的IP地址。使用關於user1.domain.com的通配符DNS記錄將解析爲127.0.0.1。如果您沒有DNS記錄,則user1.domain.com不會是有效的名稱,並且不會解析爲IP地址。 DNS記錄允許客戶端連接到您的服務器。

httpd.conf配置對於Apache服務器是本地的。它不影響客戶。 ServerAlias *.domainname.com行將配置Apache來告訴它處理任意的子域。客戶不會受到此設置的直接影響。

2

您已經添加了ServerAlias,但您的計算機發現user1.domain.comuser2.domain.com應解析爲127.0.0.1,你需要更新你的HOSTS文件或DNS Table

您編寫的配置是Apache Server在用戶請求域時處理重定向。所以,實質上,無論您需要一個Dynamic HOSTS文件還是一個將*.domain.com解析爲您的127.0.0.1服務器的服務。

希望這會有所幫助。 :)

+0

所以不可能實現沒有'A record'的子域,對吧? – ALH

+1

不幸的是...... :(但你可以使用動態DNS工具,因爲'HOSTS'文件不支持'*'等通配符! –

+0

感謝+1的澄清。 – ALH

相關問題