wp-config.php
を編集すると、次のように追加することになります。
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
ただし、私のウェブサイトには、ウェブサイト全体でhttpsとwwwを強制する.htaccess
ルールがあります。
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_Host} ^website.com
RewriteRule ^(.*)$ https://www.website.com/$1 [L,R=301]
他にも利用可能なリライタルがあることは知っていますが、どちらが正しいのかはわかりません。
wp-config.php
では次の3つを使用する必要があります
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}
wordpress SSLについて、インターネット上でこれとは少し異なる他のバリエーションがいくつか見つかりましたが、正しい/メインのSSLがわかりません...
このような場合、PHPコードはSSLをまったく扱う必要がありません。ここでは、古典的な SoC 原則を適用します。コードが接続で明示的に機能しない場合(WP機能しない場合))、プロトコルチェックをWebサーバーに任せる必要があります。
また、書き換えルールでポートを定義しないでください。マルチサイトWPセットアップを使用していない場合は、次の方法を試してください:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
これを使った。続けても大丈夫です。
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
サーバーポートが443と異なる場合は、それを指定できます。それ以外の場合は、再度使用する必要はありません。
修正された.htaccessルール( wiki.Apache.orgで詳細 ):
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://mysslcertdomainname.com/$1 [R,L]
通常、コード例(1、2、3)はWordpressでは必要ありませんが、質問に基づいたある種のプロキシがあるようです。
HTTP_X_FORWARDED_PROTO
がWebサーバーによって設定されていない場合、PHP警告(標準のphp設定)を生成します。**一般的なルールとして、_SERVER
変数(SERVER_PORT
やHTTPS
など)を変更することは、あまり一般的ではない設定(つまり、プロキシの背後にある-これが唯一の方法)でない限り、お勧めできませんこのコードの理由)。