2012-04-11 27 views
1

私はfluxflexクラウドホスティング(Apache、FastCGI)にPythonフラスコWebアプリケーションをホストしました。したがって、.htaccessファイルは次のようになります。Apache .htaccess、URL書き換えの問題

RewriteEngine On 
AddHandler fcgid-script .fcgi 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /dispatch.fcgi/$1 [QSA,L] 

これは動作します。今私はhttpからhttpsにリダイレクトしたいと思う。どうやってやるの?エラー310(ネット:: ERR_TOO_MANY_REDIRECTS):応答を得、

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

しかし:.htaccessファイルの最後に次の の2行を追加しました。最初の書き換えの前にこの2行を挿入すると、応答は次のようになります。ページが見つかりません。

誰かがhttpsにリダイレクトする正しい方法を教えてくれますか? HTTPが要求されている場合にのみ発生する必要がありfcgiのコール このリダイレクトの前にhttpsにリダイレクトするようにルールを追加

RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

答えて

1

あなたが%{HTTPS}変数を使用したい

私の.htaccessのように見えますその:

Options -Indexes +FollowSymLinks +ExecCGI 
<IfModule mod_fcgid.c> 
     AddHandler cgi-script .fcgi 
     RewriteEngine On 

     #redirect to https if http, notice the L tag 
     #it will break the rule processing and trigger the redirection   
     RewriteCond %{HTTPS} !=on 
     RewriteRule ^(.*)$ https://${HTTP_HOST}/$1 [R,QSA,L] 

     #handle the request (must be https at this point) 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L] 
</IfModule>