.htaccess似乎在OpenShift上被忽略了

时间:2014-11-30 06:40:52

标签: python django .htaccess mod-rewrite openshift

我在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文件?

1 个答案:

答案 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