2014-11-30 3 views
4

저는 OpenShift (Django, Python 2.7, Apache) 사이트에서 작업 중이며 항상 HTTPS를 통해 제공되기를 바랍니다. 나는 이것이 .htaccess과 OpenShift의 지식베이스 seems to show that it should be을 사용하는 간단한 작업이라고 생각했습니다. 그러나, 나는 며칠 동안 이것을 고민 해왔고, 어떻게 작동시키는지를 알 수 없다. 기본적으로 내 .htaccess 파일을 정적 파일 이외의 파일에서 작동시키지 못합니다. 단순히 비 정적 리소스에 대한 요청을 으로 리디렉션 할 수 없습니다.OpenShift에서 .htaccess가 무시되었습니다.

여기 내 디렉토리 구조는 ~/app-root/repo입니다. 그것은 "새로운"(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 및 장고를 시도했습니다. 비효율적이었고, 내가 추가 할 필요가있는 것을 알기 위해 그러한 종류의 설정에 대해 충분히 잘 알고 있다고 말할 수는 없지만 이상적으로는 .htaccess을 통해이 작업을 수행하고 싶습니다. 요청은 WSGI를 치기 전에 SSL을 사용해야합니다.

.htaccess 파일을 으로 요청하려면 어떻게해야합니까? 그리고 OpenShift가 wsgi에없는 파일 인 .htaccess을 무시하는 이유는 무엇입니까?

답변

1

나는 이것을 짧은 시간 동안 싸우고 신속하게 django-ssl-redirect 미들웨어 패키지를 사용하기로 결정했습니다.

내가 OpenShift에있는 모든 이유는 이런 종류의 구성 문제로 인해 싸우는 것을 피하기위한 것이기 때문에 나는 이것에 의지해야만했다.

여전히

, 여기 간다 :

그냥

'ssl_redirect.middleware.SSLRedirectMiddleware', 

django-ssl-redirect==1.0 

을 requirements.txt이 추가 (나는에 넣고 설정에서 다음과 같이 뭔가를 추가하여 MIDDLEWARE_CLASSES이 추가 내 기본 설정 파일을 여러 환경에서 공유하므로 "if"). 여기

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

자세한 정보는 : 나는 너무 OpenShift에있어 왜 https://bitbucket.org/nextscreenlabs/django-ssl-redirect

+0

그래, 그건. 이 것을 제외하고 모든 것이 아주 쉽습니다! SSL 리다이렉트 미들웨어가 작동하는 것처럼 보이기 때문에이를 해결할 것입니다. 감사! – mrt

관련 문제