Django静态文件404在服务器上,虽然在本地工作

时间:2015-05-24 17:25:01

标签: python django apache static

我已经使用WSGI在apache服务器上部署了一个django应用程序但是静态文件给了我404错误,尽管使用Django的开发服务器在我的PC上一切正常。

我的apache2.conf:

WSGIScriptAlias /app /srv/App/App/wsgi.py
WSGIPythonPath /srv/App

<Directory /srv/App/App>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

settings.py

STATIC_URL = '/app/static/'

STATICFILES_DIRS = (
   os.path.join(BASE_DIR, 'static'),
)

我如何通过模板调用静态文件的示例

{% load staticfiles %}
...
<link rel="stylesheet" href='{% static "css/main.css" %}'>

唯一不同于我本地应用版本的是,我在settings.py上的STATIC_URL不包含'/ app'部分。根据Chrome的开发人员工具,我的静态文件的URL是:

http://.../app/static/css/main.css

(使用我的模板示例的静态文件) 我认为应该是正确的,不能理解它不起作用的原因。

3 个答案:

答案 0 :(得分:0)

你难道不忘了这个吗?

manage.py collectstatic

请参阅documentation

答案 1 :(得分:0)

这是一个经常出现的问题。你必须:

  • 指定STATIC_ROOT
  • 运行collectstatic
  • live(由Apache处理)不需要
  • STATICFILES_DIRS

查看Django documentation: Managing static files

答案 2 :(得分:0)

You don't have any Alias directives in Apache configuration telling Apache where your static files are and what URL you want them to appear under. See: