2012-09-05 62 views
-1

我以爲我想到了這個,但是我已經讀了一些關於這個的不同的東西,我開始變得非常困惑。使用Django和fcgi服務靜態文件時產生混亂

在我的settings.py的URL設置是這樣的:

MEDIA_ROOT = HOME + '/uploads' 

MEDIA_URL = PUBLIC_HTML + 'media/' 

STATIC_ROOT = HOME + '/static' 

STATIC_URL = PUBLIC_HTML + 'static/' 

ADMIN_MEDIA_PREFIX = PUBLIC_HTML + 'static/admin/' 

哪裏HOME是/ home /用戶名/和PUBLIC_HTML就像是「http://www.mydomain.com/test/myproject/ 「

我似乎獲取我的靜態文件沒關係,但我的媒體文件不顯示。我沒有在我的urls.py文件中設置任何內容,而且我使用的是共享主機,所以我只能使用.htaccess文件進行apache指令。

顯然,我想讓我的媒體文件出現,但我的第一個問題是爲什麼會顯示靜態文件?這沒有意義。我認爲apache必須在Django處理這些請求之前攔截這些請求,但他們似乎在沒有任何django.static.serve網址的情況下顯示正常。這怎麼可能?我是這樣做的嗎(我確定我沒有),我如何讓媒體文件顯示出來?爲什麼不顯示靜態文件不是?

回答

0

STATIC_ROOT必須在STATIC_URL上成爲apache,顯然你已經做好了。

以同樣的方式,MEDIA_URL必須由apache在MEDIA_URL上提供服務。

你可以建立一個alias,從MEDIA_URL到MEDIA_ROOT例如:

Alias /test/myproject/media/ /home/username/media/ 

最好是避免硬編碼絕對路徑,但首先要確保它的工作原理是這樣的。

+0

我可以把這個Alias指令放在.htaccess文件中嗎?我沒有爲'STATIC_URL/ROOT'做到這一點。 – tjb1982

+0

是的,[你可以](http://httpd.apache.org/docs/current/howto/htaccess.html)。另外,你是否檢查日誌?我不知道你做了什麼或沒有做什麼:你沒有發佈你的Apache配置:) – jpic

+0

我沒有發佈它,因爲我不能訪問它,不幸的是。 (共享主機)。我似乎也沒有訪問日誌。 – tjb1982