2

我第一次将基于 Django 1.5 构建的应用程序移动到运行 apache 的开发服务器上。我让它大部分运行正常,但我在 CSS 服务方面遇到了问题。我可以让网站的 CSS 工作但不能让管理员的 CSS 工作,或者让管理员的 CSS 工作但不能让网站的 CSS 工作。

我遵循文档并使用 collectstatic 命令将所有静态资产放入 STATIC_ROOT 文件夹。

这是我的设置文件中的相关数据

STATIC_ROOT = '/var/www/projectmanagement/django/static/'

STATIC_URL = '/static/'

STATICFILES_DIRS = (
     '/var/www/projectmanagement/django/projectmanagement/projects/static',
)

这是来自 httpd.conf 的相关数据

Alias /static/admin/ /var/www/projectmanagement/django/static/admin/
Alias /static /var/www/projectmanagement/django/static/

<Directory /var/www/projectmanagement/django/static/>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias / /var/www/projectmanagement/django/projectmanagement/django.wsgi

<Directory /usr/local/wsgi/scripts> 
Order allow,deny
Allow from all
</Directory>

从我的 vhost.conf

NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin webmaster@pmt.com
ServerName pmt.com
ServerAlias www.pmt.com
DocumentRoot /var/www/projectmanagement/html/
ErrorLog /var/www/projectmanagement/logs/error.log
CustomLog /var/www/projectmanagement/logs/access.log combined

WSGIScriptAlias /projectmanagement /var/www/projectmanagement/django/projectmanagement/django.wsgi

<Directory "/var/www/projectmanagement/html">
php_admin_value open_basedir "/var/www/projectmanagement/html/:/tmp/:/var/www/projectmanagement   /django/projectmanagement/"
php_admin_value include_path "/var/www/projectmanagement/html/:/tmp/:/var/www/projectmanagement /django/projectmanagement/"
</Directory>

</VirtualHost>

当我添加行

  AliasMatch /([^/]*\.css) /var/www/projectmanagement/django/static/admin/css/$1

在我的 httpd.conf 文件中的第一个别名之前,我让管理员 css 工作,但不是站点的 css。如果它消失了,那么该网站的 CSS 工作但不是管理员的。这让我相当难过。

4

1 回答 1

0

添加该别名将捕获所有.css 请求,但看起来只能为管理员 css 提供服务。删除它意味着 css 请求将到达你的WSGIScriptAlias,我想你已经得到了DEBUG = True......所以 django 将为你提供静态媒体。

我不知道为什么 django 的内置静态服务器不适用于您的管理员 css - 您是否设置了 STATICFILES_FINDERS?

无论如何,您的别名确实应该是这样的,因此它可以为您的所有静态文件提供服务:

  AliasMatch /static/ /var/www/projectmanagement/django/static/
于 2013-03-11T19:54:12.950 回答