2013-09-30 28 views
5

我有Django與fastcgi_pass一起運行在Nginx後面。我在像「/ django/sample」這樣的子路徑上運行Django。Django Admin + FORCE_SCRIPT_NAME +登錄不正確地重定向

location /django/sample { 
    include fastcgi_params; 
    fastcgi_pass 127.0.0.1:8025; 
} 

我在django設置模塊中使用FORCE_SCRIPT_NAME,它似乎修復了我在運行子路徑時遇到的所有問題。

FORCE_SCRIPT_NAME = "/django/sample/" 

我去這裏與管理員登錄(和正確地得到管理界面):

http://server/django/sample/admin 

但是,當我提出,它重定向到:

settings.py中

http://server/django/sample/django/sample/admin 

真奇怪的是,如果我更改FORCE_SCRIPT_NAME =「」登錄的作品。

BUT,那麼所有的管理頁面的鏈接都/管理,而不是/ Django的/樣品/管理/

到底什麼我缺少什麼?設置FORCE_SCRIPT_NAME =「/ django/sample /」似乎修復了除管理員登錄之外的所有內容。

任何想法?

UPDATE:

我在nginx的使用CONF也fastcgi_split_path_info嘗試(並採取了FORCE_SCRIPT_NAME中設置)。再次修復除管理員登錄重定向之外的所有路徑問題。

的conf這樣的:

location /django/sample { 
    fastcgi_split_path_info ^(/django/sample)(.*)$; 
    include fastcgi_params; 
    fastcgi_pass 127.0.0.1:8025; 
} 

回答

4

僅供參考,我放棄了。所有文件都說它應該很容易。但是處理起來太痛苦了。相反,我需要我們的Django應用程序使用子域並在服務器上設置虛擬主機。這樣Django可以在文檔根目錄下運行「/」

+3

我知道它已經過了幾年,但我告訴你我有同樣的問題。這是#$ * @ $(!我在開發服務器上進行了幾次測試,並且它完美地工作,但是一旦它轉換到生產環境,一些鏈接就會開始崩潰,例如重定向,這讓我瘋狂。得到了較好的發展。 –