我在OpenShift网站上工作(Django,Python 2.7,Apache),我希望它始终通过HTTPS提供服务。我认为使用.htaccess
和OpenShift的知识库seems to show that it should be这将是一项简单的任务。但是,我已经为此困扰了好几天,而且我无法弄清楚如何让它发挥作用。基本上,除了静态文件之外,我无法获取.htaccess
个文件。我无法获取非静态资源请求以重定向到任何。
这是我的目录结构,位于~/app-root/repo
内。它正在使用" new" (2014年3月左右?)OpenShift目录结构。
/MyProject
settings.py
urls.py
[etc.]
/[app directories]
/static
/wsgi
wsgi.py
static -> ../static
manage.py
requirements.txt
好吧,经过多次挫折之后,我一直在测试最低可行性.htaccess
,看看我是否可以获得任何工作。它看起来像这样:
RewriteEngine on
RewriteRule .* http://www.google.com
一切都应该归Google所有。如果我把它放在wsgi
目录中,我的所有静态文件都会被重定向到google.com,但没有别的。如果我把它放在~/app-root/repo
中,一切都没有发生。它就像文件不存在一样。
同样,如果我使用OpenShift建议的命令并将文件放在wsgi
中,我的静态文件会被重定向到使用HTTPS,但没有别的。
我也按照sites like this one的建议尝试了将os.environ['HTTPS'] = "on"
添加到wsgi.py
的WSGI和Django。那是无效的,而且我真的不能说我对这些设置有足够的了解,知道我需要添加什么,但理想情况下我想要通过.htaccess
执行此操作。请求应该在使用SSL之后才能访问WSGI。
我需要做些什么才能使我的.htaccess
文件能够处理所有请求?为什么OpenShift忽略不在.htaccess
中的wsgi
文件?
答案 0 :(得分:1)
我与他争吵了很短的时间,并迅速决定使用django-ssl-redirect中间件包。
我使用OpenShift的全部原因是为了避免与这些配置问题作斗争,所以我有点失望,我不得不求助于此。
仍然如此:
只需将其添加到MIDDLEWARE_CLASSES
即可'ssl_redirect.middleware.SSLRedirectMiddleware',
将此添加到requirements.txt
django-ssl-redirect==1.0
在设置中添加这样的内容(我把它放在我在多个环境中共享的基本设置文件中,因此“if”)。
if os.environ.has_key('OPENSHIFT_REPO_DIR'):
SSL_ON = True
SSL_ALWAYS = True
此处有更多信息:https://bitbucket.org/nextscreenlabs/django-ssl-redirect