0

私はPhalcon PHPで作られたウェブサイトでHTTPSを設定しました。今度は、HTTPに行われたリクエストをHTTPSにリダイレクトしたいと思います。サーバはAWS EC2であり、ロードバランサを備えています。PhalconPHP + .htaccess:httpsを強制する方法

Phalcon PHPは2つの.htaccessファイルがあります。

/.htaccessの

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ public/ [L] 
    RewriteRule (.*) public/$1 [L] 
</IfModule> 

私はthis post上の指示に従って、コメントを追加しています

AddDefaultCharset UTF-8 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] 
</IfModule> 

/公共の.htaccessこれをこれらのファイルに適用すると、ERR_TOO_MANY_REDIRECTSが返されます。

# force HTTPS 
RewriteCond %{HTTPS} !=on 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

私がここで間違っていることを理解するのに役立つことができますか?
ありがとうございました。

更新日: AWSのロードバランサに問題があると思います。これは私の設定です:(SSL証明書を使用して)ロードバランサを持つEC2インスタンス、次にRoute53ではこのロードバランサを指しています。私はthis postで答えを試してもまだ動作しません。

答えて

1

ニコライの答えは正しいですが、問題は何か他のものだった:AWSのロードバランサでの問題。

<IfModule mod_rewrite.c> 
     RewriteEngine on 

     #solves the problem with load balancer 
     RewriteCond %{HTTP:X-Forwarded-Proto} =http 
     RewriteRule ^$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 

     RewriteCond %{HTTP:X-Forwarded-Proto} =http 
     RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 

     RewriteRule ^$ public/ [L] 
     RewriteRule (.*) public/$1 [L] 
</IfModule> 

Amazonの記事here:だから、これは私の現在のルートの.htaccessです。

+1

知っておもしろい、共有ありがとう:) –

1

HTTPSリダイレクトまたはその他のリダイレクトは、.htaccessファイルのPhalconルールの前に置く必要があります。

これはルートフォルダ内の私の.htaccessファイルです:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    # Force HTTPS 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

    # Force www 
    RewriteCond %{HTTP_HOST} !^$ 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteCond %{HTTPS}s ^on(s)| 
    RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

    # Forward to /public/ folder 
    RewriteRule ^(.*)$ public/$1 [L] 
</IfModule> 
+0

お返事ありがとうございます。あなたの.htaccessは動作するはずですが、何らかの理由でサーバ上で動作しません。あなたはhttp://htaccess.mwl.be/でテストをパスしますが、私のサーバーでは503エラーが出ます。私はこれを解決するために何かをしようとしています。私は問題を見つけるときにここに書き戻します、それは小さな詳細でなければなりません –

関連する問題