python - .htaccess 在 OpenShift 上似乎被忽略了

标签 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

一切都应该交给谷歌。如果我将它放在 wsgi 目录中,我所有的静态文件都会被重定向到 google.com,但其他任何东西都不会。如果我把它放在 ~/app-root/repo 中,什么也不会发生。就像文件不存在一样。

同样,如果我使用 OpenShift 建议的命令并将文件放在 wsgi 中,我的静态文件将被重定向为使用 HTTPS,但其他任何东西都不会。

我还尝试了 WSGI 和 Django 的东西,比如按照 sites like this one 的建议将 os.environ['HTTPS'] = "on" 添加到 wsgi.py .这是无效的,我真的不能说我对这些设置有足够的了解,知道我需要添加什么,但理想情况下我想通过 .htaccess 来做到这一点.请求在到达 WSGI 之前应该使用 SSL。

我需要做什么才能使我的 .htaccess 文件处理所有 请求?为什么 OpenShift 会忽略不在 wsgi 中的 .htaccess 文件?

最佳答案

我为此纠结了一小段时间,很快决定使用 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

关于python - .htaccess 在 OpenShift 上似乎被忽略了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27210756/

相关文章:

.htaccess - HTaccess 如何重定向多个 URL?

python - 如何找到哪个文件是 "initiator"Python

python - 推广小部件并从生成的 ui 中使用它们

python - Django 1.6 : How to ignore a fixture in python manage. py 加载数据?

.htaccess - 从服务器删除图像,使用 htaccess 修复谷歌错误

apache - .htaccess - 将多个子目录重写为 root

python - Pandas 数据框分组并加入

python - 使用python查找链接页面以定位页面

python - 将不在模型中的字段添加到 Django REST 框架中的序列化程序

django - 在 Django 管理员中,是否可以根据组将模型分成子模型?