剛剛切換我的網站以通過SSL提供服務時,我無法讓Django選擇正確的生成的URL:s用於靜態文件。Django似乎從靜態文件URL中去掉https - 爲什麼?
我STATIC_URL
設置在https://example.com/assets/static/
形式當我在一個模板做{% static 'css/file.css' %}
,路徑出來爲http://example.com/assets/static/css/file.css
- 這是和以前一樣。
事情我已經試圖解決這個問題:
- 確保我在最新提交,用正確的設置。
- 冉
python manage.py collectstatic
- 而重新啓動的nginx/gunicorn/memcached的
- 刪除
*.pyc
-files,以防萬一
同樣的事情發生與MEDIA_URL
。但是,如果我放入交互式外殼並導入模型,然後打印上傳的圖像文件的.url
屬性(例如),則會顯示正確的https://
-prefix。
運行Django 1.9.5,對於靜態文件使用CachedStaticFileLoader
,Gunicorn(v 19.4)和模板緩存。緩存引擎是memcached。
關於發生了什麼事情的任何想法?
編輯:STATIC_URL
和MEDIA_URL
的設置更改根本沒有被拾取,看起來,儘管其他代碼更改似乎工作。我不知道發生了什麼事...
你有'os.environ ['HTTPS'] =「on」'你試過使用相對的'STATIC_URL'嗎?同樣,從http重定向到https也是一件好事,不管是在nginx中,它應該是靜態的 – aershov
我使用'SECURE_PROXY_SSL_HEADER'設置將HTTPS狀態從Nginx傳遞給Django,它似乎正在工作(我可以在模板中輸出'request.is_secure'的結果,並返回'True')。我嘗試在環境中添加'HTTPS = on',但它對我的問題沒有影響。 我懷疑還有其他事情正在進行,因爲'MEDIA_URL'和'STATIC_URL'中的值似乎根本不會被拾取,相對與否。 :-( – Emil