Ben*_*ney 3 apache django .htaccess python-3.x openshift
我尝试使用 Python 3.3 卡带在 OpenShift 上部署 Django 1.6 应用程序,但遇到了静态文件问题。我在 OpenShift IRC 频道、教程/模板(例如)和之前的 StackExchange 问题(例如)方面取得了部分成功, 但没有任何方法可以完全解决问题。
当我通过 URL 请求静态内容(例如“mydomain.com/static/stylesheet.css”或“mydomain.com/static/icons/cog.svg”)时,我可以完美地看到它们。当静态文件用作图标的 SVG 数据时,它们显示得很好。仅当链接到样式表时我才会遇到问题。我使用以下内容将 CSS 包含在我的模板中:
<link type="text/css" rel="stylesheet" href={% static "stylesheet.css" %}/>
Run Code Online (Sandbox Code Playgroud)
我已经加载了使用{% load staticfiles %}. Django(我假设它是 Django,而不是 Apache)不是在 处查看样式表,而是/static/stylesheet.css在 处查找/static/stylesheet.css/(注意尾部斜杠)。这会导致请求失败并显示 404 状态代码。当我使用其他文件扩展名(我尝试过 、 和 )或链接到 的子目录中包含的文件时,也会发生.txt同样.css的.svg情况static。只有在这种情况下才会附加额外的尾部斜杠。
据我了解,如果 URL 与urls.py. 是否可以在 OpenShift 上配置 Apache,以便它直接处理对表单 URL 的所有请求/static/*?.htaccess我的目录中有一个wsgi包含命令的文件
Rewrite Engine On
Rewrite Rule ^application/static/(.+)$ /static/$1 [L]
Run Code Online (Sandbox Code Playgroud)
但这并不能解决问题。我还尝试过仅对样式表以及一些内容使用重写规则Alias但也没有运气。
Django 是否应该获取这些静态文件的请求?我已确认在我的文件中DEBUG已设置该设置,但在我的文件中未提及。以下是 的相关部分:Falsesettings.pydjango.views.static.serveurls.pysettings.py
STATIC_URL = '/static/'
if 'OPENSHIFT_REPO_DIR' in os.environ:
STATIC_ROOT = os.path.join(os.environ.get('OPENSHIFT_REPO_DIR'),
'wsgi', 'static')
else:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
Run Code Online (Sandbox Code Playgroud)
我没有为STATICFILES_DIRS或设置值STATICFILES_FINDERS,因为目前我只处理在 中找到的静态文件STATIC_ROOT。OpenShift 项目看起来像
~/app-root/runtime/repo/wsgi/
.htaccess
application
openshift/
settings.py
manage.py
#And so on.
static/
stylesheet.css
icons/
cog.svg
#More icons here.
Run Code Online (Sandbox Code Playgroud)
这是我第一次尝试部署,我被困在这个绊脚石上。有谁知道我做错了什么?
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |