【问题标题】:Confusion with serving static files with Django and fcgi混淆使用 Django 和 fcgi 提供静态文件
【发布时间】:2012-08-30 12:45:39
【问题描述】:

我以为我已经弄清楚了,但我已经阅读了一些关于此的不同内容,我开始感到非常困惑。

我的 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/username/,PUBLIC_HTML 就像“http://www.mydomain.com/test/myproject/”

我的静态文件似乎没问题,但我的媒体文件没有显示出来。我的 urls.py 文件中没有设置任何内容,而且我使用的是共享主机,所以我所能做的就是将 .htaccess 文件用于 apache 指令。

显然,我想让我的媒体文件显示出来,但我的第一个问题是为什么会显示静态文件?这没有意义。我认为 apache 必须在 Django 处理这些请求之前拦截这些请求,但在 url 中没有任何类型的 django.static.serve 业务时,它们似乎显示得很好。这怎么可能?我这样做对吗(我确定我不是),如何让媒体文件显示出来?为什么静态文件不显示时它们不显示?

【问题讨论】:

    标签: django apache fastcgi shared-hosting


    【解决方案1】:

    STATIC_ROOT 必须在 STATIC_URL 上为 apache 提供服务,您显然做得对。

    以同样的方式,MEDIA_ROOT 必须由 MEDIA_URL 上的 apache 提供服务。

    您可以设置一个alias,例如从 MEDIA_URL 到 MEDIA_ROOT:

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

    最好避免硬编码绝对路径,但首先要确保它是这样工作的。

    【讨论】:

    • 我可以把这个别名指令放在 .htaccess 文件中吗?我没有为STATIC_URL/ROOT 这样做。
    • 是的,you can。另外,你检查过日志吗?我不知道你做了什么或没做什么:你没有发布你的 apache 配置:)
    • 很遗憾,我没有发布它,因为我无权访问它。 (共享主机)。我似乎也无权访问日志。
    猜你喜欢
    • 2020-01-29
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    相关资源
    最近更新 更多