HTTPをHTTPにリダイレクトしたい、.htaccessファイルの次のコードを試した
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]
.httaccess
ファイルで次のコードも試しましたが、これも機能しませんでした。
Options +FollowSymlinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://%{HTTP_Host}/$1 [R=301,L]
# BEGIN WordPress
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>
いくつかのHTTPSからHTTP WordPressプラグインも試してみましたが、これも機能しませんでした。
この問題を解決する方法を教えてください。
はい、Flexible SSL(無料)クラウドフレアサービスを使用しています
これが問題です"。 Antonyがコメントで示唆しているように。サーバーがポート80(プレーンHTTP)で要求に応答しています。 SSL接続は、訪問者とCloudFlareの間のみです。 CloudFlareとサーバー間の接続は暗号化されていません。これが「フレキシブルSSL」(無料)CloudFlareサービスです。
参照:
https://support.cloudflare.com/hc/en-us/articles/200170416-What-do-the-SSL-options-mean-
すべてのリクエストをHTTPにリダイレクトしたいので、CloudFlareでSSLオプションを無効にする必要があります。
UPDATE:サーバーはプレーンHTTPで動作しており、SSLはフロントエンドプロキシ(この場合はCloudFlare)によって処理されているため、プロキシがHTTPリクエストヘッダーでこの情報を送信する場合は、元のリクエストのプロトコル(HTTPまたはHTTPS)を検出します。 X-Forwarded-Proto
慣例により。
From Wikipedia-HTTPヘッダーフィールドのリスト-X-Forwarded-Proto
:
リバースプロキシ(またはロードバランサ)は、リバースプロキシへのリクエストがHTTPSであっても、HTTPを使用してWebサーバーと通信できるため、HTTPリクエストの発信元プロトコルを識別するための事実上の標準。
これをHTTPSからHTTPへのリダイレクトに組み込む:
RewriteCond %{HTTP:X-Forwarded-Proto} =https [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
参照:
Cloudflareサポート-WordPressでフレキシブルSSLを有効にした後、無限リダイレクトループエラーを修正するにはどうすればよいですか? (WordPress以外の関連情報を含む)