2011-07-27 50 views
0

我擁有一個網站,它爲每個註冊用戶提供這樣的專用空間: www.mywebpage.com/user1 www.mywebpage.com/user2 www.mywebpage.com/user3 在此路徑中,用戶擁有他的迷你網站。每個用戶的子域

我想給我的用戶不是我的域內的路徑,但這樣的二級域名: user1.mywebpage.com user2.mywebpage.com user3.mywebpage.com

很多網站這樣做,但我無法弄清楚如何獲得它!

  1. 我應該在每個單一用戶的dns記錄中註冊CNAME嗎?我該如何用PHP實現這一目標?我認爲可以用一個人手寫的腳本配置godaddy。

  2. 我可能會註冊一個別名CNAME,它將每個第二級域名指向我的頂級域名,然後在我的頂級域名中檢查檢索用戶的URL的第一個標記:但現在我無法將他重定向到新的頁面(這是他的子網站的索引),或者我丟失了網址userx.mywebpage.com。

我該如何處理?爲了實現我的目標,我會很感激任何關於正確道路的暗示。

回答

2
  1. 創建一個通配符指向您的服務器的IP記錄(*.mywebpage.com)。

  2. ServerName *.mywebpage.com創建一個Apache虛擬主機,將所有請求指向同一文檔根目錄。您的腳本查看主機名以瞭解它是哪個用戶的網站。您不需要在用戶的子域外進行重定向。如果您的腳本看到該子域名爲「www」,那麼這是您顯示主網站而不是用戶內容的特殊情況。

+0

但是爲了使用戶自動註冊,我需要在我的php註冊腳本中編輯我的httpd.conf並重新啓動apache!這樣對嗎? –

+0

@ hysoka44不,因爲腳本將決定URL是否有效,而不是Apache。無需重啓Apache,因爲您已將該邏輯移至PHP。 –

+0

你所做的是使用.htaccess將整個網址發送到你的index.php,然後在索引內,你可以使用字符串操作將網址分割成幾部分,並且可以。找出用戶是真實的還是b。找出要顯示的頁面。 – GiladG

0

你不必爲你想要存檔的東西設置dns條目。取決於您對網站有多少控制權,如果您使用的是Apache,則可以輕鬆地爲您的子域設置虛擬主機(請參閱http://content.websitegear.com/article/subdomain_setup.htm

+0

但是爲了在用戶註冊時自動做到這一點,我需要編輯我的httpd.conf並在我的php註冊腳本中重新啓動apache!這樣對嗎? –

+0

@ hysoka44正確 – Dominik

0

您要查看的功能通常稱爲通配符sudomain(通常爲博客網站有這個功能)。

通常,您將*的CNAME記錄表示爲通配符子域。相反,Godaddy用名稱*創建A記錄並將IP設置爲您的服務器。過去我們已經完成了我們的ASP.net網站(不確定是否仍然與GoDaddy合作,但試一試)。

在PHP方面,我可以建議在httpd.conf或apache.conf文件中添加一些重定向(URL Rewrite)配置。

請在此之後檢查此 http://kbeezie.com/view/wildcard-subdomains-php/

您可以編寫自己的邏輯。你所需要做的就是從db中找出你的用戶,它位於子域名中,並呈現頁面。