2011-09-30 114 views
1

我聽說我應該使用Apache在生產環境中提供靜態文件。我有一些問題,理解我應該怎麼做,但。我的項目的靜態URL是/static/,而django.contrib.admin的靜態路徑是/static/admin/。這些都是我的服務器上有兩個完全獨立的目錄,我也很難做到這一點:如何託管Django項目的管理靜態文件?

Alias /static /path/to/site.com/static 
Alias /static/admin /usr/local/.../django/contrib/admin/media 

由於它們重疊。

我該怎麼做?我真的必須將contrib admin靜態文件夾複製到我自己的文件夾中嗎?

回答

1

首先,沒有人說你必須從爲別人相同的基本路徑爲你的管理員靜態文件。你可以設置ADMIN_MEDIA_PREFIX爲任何你喜歡的。

然而,最簡單的事情就是添加從靜態文件夾到django/contrib/admin/media的符號鏈接。

+0

對於絆倒這個答案的人們,'ADMIN_MEDIA_PREFIX'已經在1.4中棄用了。請參閱[this](http://stackoverflow.com/a/9960831/1226722)。 – gregoltsov

1

常用的解決方法是使用/媒體/對admin媒體靜態文件,因此它可能是在settings.py

ADMIN_MEDIA_PREFIX = '/media/' 

和虛擬主機配置:

Alias /media /path/to/django/contrib/admin/media/ 
<Location /media> 
    SetHandler None 
</Location> 
0

可以顛倒順序在Alias條目和Apache將解析它像預期一樣:

Alias /static/admin /usr/local/.../django/contrib/admin/media 
Alias /static /path/to/site.com/static 

這是因爲... e當Apache加載它的配置時,它從上到下存儲條目。所以它首先嚐試匹配/static/admin,然後如果URI不匹配,則它會嘗試匹配/static