2017-08-31 10 views
0

WordPressを使用しています。私はすべてのページが強制的にHTTPSを使用する必要があります。置き換えられない安全でないコンテンツを持つiframeを持つ特定のページが1つ必要です。.htaccess経由でHTTPSから1ページを除外しますが、そのページのリンクをHTTPSにリダイレクトします。

私の.htaccessファイルでは、さまざまな設定を試みました。彼らの中には他よりもうまくいった人もいますが、誰も完全に働いていません。

私が遭遇している問題は、サイトのナビゲーションメニューが相対リンクを使用していることです。私はiframeページでHTTPを強制するいくつかのオプションを見つけましたが、そのページ(iframeの外側)でクリックされたナビゲーションリンクは、それらのページのHTTPSバージョンにリダイレクトされません。

ここで私はそれがうまくいかない例があります。

<IfModule mod_rewrite.c> 
RewriteEngine On 
# Go to https if not on /iframe/ 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} !^/iframe/$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

# Go to http if you are on /iframe/ 
RewriteCond %{SERVER_PORT} !80 
RewriteCond %{REQUEST_URI} ^/iframe/$ [NC] 
RewriteRule ^(.*)$ https//www.example.com/$1 [R=301,L] 
</IfModule> 

答えて

0

.htaccessファイルでは、次のルールを使用してそのことを達成できます。 HTTPSがオンになっていない場合は最初にチェックし、そうでなければ、ディレクトリ/iframe/を除いてすべてをHTTPsに転送します。 2番目のルールはHTTPSがオンかどうかをチェックし、そうであれば/frame/をHTTPにリダイレクトします。

RewriteEngine On 

RewriteCond %{HTTP:X-Forwarded-SSL} !on 
RewriteCond %{REQUEST_URI} !^\/(iframe) 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301] 

RewriteCond %{HTTP:X-Forwarded-SSL} =on 
RewriteCond %{REQUEST_URI} ^\/(iframe) 
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301] 

あなたはこれをテストする前に、あなたのキャッシュをクリアしていることを確認します。

EDIT:

RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteCond %{THE_REQUEST} !/iframe/ [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{THE_REQUEST} ^/iframe/ [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

あなたは二重のコードをチェックしてもらえますか? 「このページは適切にリダイレクトされていません。Firefoxは、このアドレスのリクエストをサーバーがリダイレクトして、決して完了しないようにしています。 –

+0

「HTTP:X-Forwarded-SSL」を使用していた可能性があります。その下の私の編集を試してみてください。 – Lag

+0

強制HTTPSが動作していますが、iframeページをHTTPに強制していません。 –

関連する問題