2017-03-29 13 views
3

私はこれに続きましたquestionそしてこれもquestion しかし、私はあまり助けになりませんでした。zf2 - .htaccessを使用してSSL/httpsを強制する

私はpage is not redirecting properlyエラーを取得していますZendのFramework2

上です。

私は.htaccessファイルの起動時にこれを追加した

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ 
RewriteRule ^(.*) - [E=BASE:%1] 
RewriteCond $1 !^(index\.php|robots\.txt|(.*).gif|(.*).jpg|(.*).png|(.*).jpeg|(.*).GIF|(.*).JPG|(.*).PNG|(.*).JPEG|upload|(.*).js|(.*).css) 
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L] 

<IfModule mod_deflate.c> 
<IfModule mod_setenvif.c> 
<IfModule mod_headers.c> 
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding 
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding 
</IfModule> 
</IfModule> 

<IfModule mod_filter.c> 
AddOutputFilterByType DEFLATE application/atom+xml \ 
application/javascript \ 
application/json \ 
application/rss+xml \ 
application/vnd.ms-fontobject \ 
application/x-font-ttf \ 
application/x-web-app-manifest+json \ 
application/xhtml+xml \ 
application/xml \ 
font/opentype \ 
image/svg+xml \ 
image/x-icon \ 
text/css \ 
text/html \ 
text/plain \ 
text/x-component \ 
text/xml 
</IfModule> 
</IfModule> 

<IfModule mod_php5.c> 
    #Session timeout 90 days - 7776000 
    php_value session.cookie_lifetime 7776000 
    php_value session.gc_maxlifetime 7776000 
</IfModule> 

これは私の.htaccessファイルで、

RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

しかし、私のために働いていませんでした。

私は間違っていますか?

- Apacheのバージョンは2.2.15です。

+0

あなたはあなたのためにTLS/SSLターミネーションをやっているロードバランサの背後にありますか? – brutuscat

+0

@brutuscat私はそれについて知らない。それを確認する方法。.. –

答えて

0

は、あなたがこれを試したことがありhtaccessの

RewriteCond %{HTTP_HOST} ^example.net$ [NC] 
RewriteRule (.*) https://www.example.net/$1 [R=301,L] 

またはちょうどあなたのブートストラップファイルに

protected function _initForceSSL() { 
    if($_SERVER['SERVER_PORT'] != '443') { 
     header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 
     exit(); 
    } 
} 
+0

両方の方法を試してみてください。まだ同じエラーが発生しています。 'ページが正しくリダイレ​​クトされていません' –

+0

'APP_URL = http:// example.com'のプロジェクト環境をhttps –

+0

に変更しようとしています。このタイプの' APP_URL'を設定ファイルに宣言していません。 –

0

を機能を追加して使用してみてください?

RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
+0

sslを強制していません。 (ブラウザのキャッシュ/クッキーを消去してテスト済み) –

0

あなたはこれが私のために働いていたこの

#Rewrite to HTTPS 
RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

を試すことができます。

0

すべてのWebトラフィックがHTTPSを使用するようにするには、Webサイトのルートフォルダの.htaccessファイルに次のコード行を挿入します。

重要:.htacessに既存のコードがある場合は、既に似た開始プレフィックスを持つルールがあるところに上記を追加します。

は、Webサイトのルートフォルダに.htaccessファイルに次のコード行を使用し、HTTPSを使用するように特定のドメインを強制するには、次のドメイン名にexample.comを置き換えるために

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example\.com [NC] 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

ことを確認しますhttpsに強制しようとしている。さらに、www.example.comを実際のドメイン名に置き換える必要があります。

あなたが特定のフォルダにSSLを強制したい場合は、その特定のフォルダに置かれた.htaccessファイルに以下のコードを挿入することができます:あなたは、実際のフォルダ名にフォルダの参照を変更してください

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} folder 
RewriteRule ^(.*)$ https://www.example.com/folder/$1 [R,L] 

。次に、www.example.com/folderを、SSLを適用する実際のドメイン名とフォルダに置き換えてください。

0

Favori solution。

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTPS} off 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
    RewriteRule^https://%1%{REQUEST_URI} [R=301,L] 
</IfModule> 

素敵な答えBest Practice: 301 Redirect HTTP to HTTPS (Standard Domain)

関連する問題