2011-07-01 72 views

回答

4

Django本身並不知道您使用的任何Web服務器。通常,要配置額外的子域,您需要將虛擬主機添加到您的網絡服務器的配置中,並確保您的DNS提供商將對該子域的請求轉發給相應的服務器。

要直接執行此操作,您需要在對您的Web服務器的配置文件具有寫入訪問權限的用戶帳戶下運行Django,它不建議使用。假設所有主機都在同一臺計算機上,您可以間接執行此操作,例如排隊請求,並讓某人手動批准它們並編輯該文件,或讓腳本穿過cron並每隔X分鐘/小時重新編寫一次服務器配置/天。

此外,DNS註冊是一個主要問題。如果你有一個通配符域名,例如"*.foo.com",你會沒事的。如果您的DNS提供商不允許這樣做,您需要讓某人手動註冊額外的子域名。

基本上,這與Django幾乎沒有關係,它幾乎全部取決於您的服務器的軟件堆棧(您沒有指定)。

10

Andre提供的答案並不完全正確。你確實需要一個通配符域,大多數體面的提供商會允許這包括GoDaddy(IE這不是你應該非常擔心的限制)。 「

」要直接執行此操作,您需要在擁有寫入權限的用戶帳戶下運行Django,該帳戶對您的Web服務器的配置文件具有寫入權限,假設所有主機都位於同一臺計算機上,則可以執行此操作這可以間接地實現,例如對請求進行排隊,並讓某人手動批准它們並編輯該文件,或讓腳本通過cron運行並每隔X分鐘/小時/天重新編寫服務器配置。「

這基本上在任何方面都是完全錯誤的。事實上,你需要把這個關掉的是:Subdomain Middleware。只需將它與適當的Web服務器配置相結合,即可接受* .example.com的請求,並且您具有必要的變量,以便在每個視圖中關閉您的隊列

+0

除了這方面存在明顯的限制外。有了這個解決方案,所有用戶將共享同一個數據庫中的數據,在同一用戶帳戶下運行,所有用戶都擁有相同的應用程序(因此具有相同的設置)。最後一個基本意思是你不能有其他的子域沒有綁定到用戶帳戶,比如'www.foo.com'。 –

+0

仍然爲您的答案+1,因爲這是一種替代解決方案。 –

+0

自2011年以來,這個問題有沒有更新/更好的答案? – Vishal

相關問題