プロトコルをhttpからhttpsに変更しています。
ワードプレスをサブディレクトリとしてインストールしています(例:www.example.com/blog)
ロードバランサの背後にサーバがあります。ロードバランサへの要求は暗号化されていますが、ロードバランサからサーバへの要求は暗号化されていません。
Httpsアドレスを反映するようにhome
およびsiteurl
パラメータを更新しました。そして私はwp-config.php
ファイルに次のコードを追加しました:
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
何らかの理由で、私が https://www.example.com/blog のURLにアクセスすると、次のリダイレクトが発生します。 https://...blog - > http://...blog/
http://...blog/ - > https://...blog/
私は1つのリダイレクト(スラッシュを追加するためのもの)と共に生きることができますが、なぜそれがhttp://
アドレスにリダイレクトされるのか理解できません。まだhttp://
を参照しているものは私の設定にはありません。
それはなぜこれをしているのですか?
ブラウザのキャッシュをクリアしようとしました。 .htaccessファイルもありますが、.htaccess
ファイル内のすべてのコードがコメント化されている場合でもリダイレクトが行われるため、このファイルとは無関係です。
誰かがまだhtaccess
ファイルが適切であると思う:私はhtaccess
ファイルに2つの規則があります:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
httpをhttpsにリダイレクトします。
そして
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
スラッシュを追加するための(私は思う)。
最初の規則は関係ありませんが(私はhttps
アドレスに直接行きますので)。そして、2番目のルールをコメントしても問題の問題には影響しません。
https
を使用しているという事実についてwordpressを更新する必要がある場所が他にありますか?
ありがとう。
これは多少推測されますが、おそらくWebサーバーの設定の結果です。あなたのサーバーがおそらくすることは、リクエストがサイトのblog
URLをロードしようとしていることを見ることです。 blog
はスラッシュを追加してそれにリダイレクトするディレクトリであることをチェックアウトして確認します。これで、ロードバランサーはhttp
リクエストを送信するので、Webサーバーはhttp
にリダイレクトします。その後、リクエストはwordpressディレクトリに対して行われ、すべてのhtaccessおよびwordpressロジックが起動し、正しい情報/リダイレクトなどを提供します。
解決策...これが良い話だけでなく本当の話でもある場合は、ルートディレクトリのhtaccess内のhttpからhttpsへのリダイレクトでおそらく解決するはずです。
それが実際に問題を解決するのであれば(そして、あなたは今のところ価値があると思います)、Apacheは各要求ごとに階層内の各ディレクトリのすべてのhtaccessを読み込んで実行するので「無駄な時間の無駄です。
データベースのbaseurlsを更新する必要があります。つまり、オプションテーブルのsiteurlおよびhomeのoption_valuesです。
次のコードはあなたのために頑強にそれをするでしょう。ここで私が示した接頭辞に注意してください、 "wp_"が、もちろん、それはそうではありません! :)もちろんあなたはサイト名を変更する必要があります。
UPDATE wp_options SET option_value = replace(option_value, 'http://www.example.com/blog', 'https://www.example.com/blog') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.example.com/blog', 'https://www.example.com/blog');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.example.com/blog', 'https://www.example.com/blog');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.example.com/blog','https://www.example.com/blog');
あなたの.htaccessファイルでこれを試してください
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
それが役立つかどうかを確認
WordPressファイルを自分で編集する必要はありません。 WordPressは、手動でコードを変更しなくても、httpまたはhttpsのどちらでも使用できます。
既存のWordPressサイトのプロトコルを変更する必要がある場合は、2つのことができます。
あなたのブログがhttpとhttpsを通してアクセス可能であることを確認してください。それから、バックエンドであなたのWordPress設定に切り替えて、 http://example.org から https://example.org にあるブログのURLを更新するだけです。 htaccessファイル自体
データベース上で検索と置換を行うことができます。そのためには、単純な検索と置換のプロセスでは認識されない、シリアル化されたデータに注意する必要があります。 from interconnect のようなツールを使うことをお勧めします。
wp-config.phpにハードコードされたURLが含まれていないことを確認してください( "サイトURLの変更" を参照)。