2011-09-30 112 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