.htaccess aparentemente ignorado en OpenShift

Estoy trabajando en un sitio en OpenShift (Django, Python 2.7, Apache) y me gustaría que siempre se sirva a través de HTTPS. Pensé que esto sería una tarea simple usando .htaccess , y la base de conocimientos de OpenShift parece mostrar que debería serlo . Sin embargo, he estado agonizando por esto durante días, y no puedo averiguar cómo hacer que funcione. Básicamente, no puedo hacer que mis archivos .htaccess operen en otra cosa que no sean archivos estáticos. Simplemente no puedo obtener solicitudes de recursos no estáticos para redirigir a nada .

Aquí está mi estructura de directorio, dentro de ~/app-root/repo . ¿Está utilizando la estructura de directorios OpenShift “nueva” (de marzo de 2014 o algo así?).

 /MyProject settings.py urls.py [etc.] /[app directories] /static /wsgi wsgi.py static -> ../static manage.py requirements.txt 

Ok, después de mucha frustración, he estado probando con un mínimo .htaccess viable para ver si puedo hacer que algo funcione. Se parece a esto:

 RewriteEngine on RewriteRule .* http://www.google.com 

Todo debe ir a Google. Si pongo esto en el directorio wsgi , todos mis archivos estáticos se redirigen a google.com, pero nada más lo hace. Si lo pongo en ~/app-root/repo , no pasa nada. Es como si el archivo no existiera.

Del mismo modo, si uso los comandos sugeridos por OpenShift y pongo el archivo en wsgi , mis archivos estáticos se redirigen para usar HTTPS, pero nada más lo hace.

También he intentado cosas WSGI y Django como agregar os.environ['HTTPS'] = "on" a wsgi.py como lo sugieren sitios como este . Eso ha sido ineficaz, y realmente no puedo decir que tengo suficiente conocimiento acerca de ese tipo de configuraciones para saber qué debo agregar, pero idealmente me gustaría hacer esto a través de .htaccess . La solicitud debe estar utilizando SSL antes de que llegue a WSGI.

¿Qué debo hacer para que mis archivos .htaccess funcionen en todas las solicitudes? ¿Y por qué OpenShift ignora los archivos .htaccess que no están en wsgi ?

Luché con esto por poco tiempo y rápidamente decidí usar el paquete de middleware django-ssl-redirect.

La razón principal por la que estoy en OpenShift es para evitar luchar con este tipo de problemas de configuración, por lo que estoy un poco decepcionado de tener que recurrir a esto.

Aún así, aquí va:

Solo agrega esto a tu MIDDLEWARE_CLASSES

 'ssl_redirect.middleware.SSLRedirectMiddleware', 

Agrega esto a Requirements.txt

 django-ssl-redirect==1.0 

Agregue algo como esto en la configuración (pongo esto en mi archivo de configuración base que comparto en múltiples entornos, de ahí el “si”).

 if os.environ.has_key('OPENSHIFT_REPO_DIR'): SSL_ON = True SSL_ALWAYS = True 

Más información aquí: https://bitbucket.org/nextscreenlabs/django-ssl-redirect