こんにちは、WPホームページ研究所の運営サポートチーム(@WP_LABO)です。
本日はさくらインターネットのレンタルサーバーで運用しているワードプレスのウェブサイトURLを『httpsかつwwwありで統一』する手順をご紹介いたします。
まず始めに「ドメインを1つに統一しておく利点」をご存知でしょうか?
もし運営されているウェブサイトのURLが「http://example.com」だった場合に「http://www.example.com」でも同ページが開く状態だと検索エンジン的には2つの異なるURLが存在していると認識されます。理由は『www』の部分がサブドメインに該当するからです。
さらに「SSL(https://)」を導入している場合はさらにパターンが増えてしまいます。
検索エンジンには運営ドメイン内でどういった運用をしているかまで見抜く機能がありません。そのため仮に異なるサイトとして認識されてしまうと「ウェブサイトの評価も常に分散されてしまうデメリット」が付いてきます。解決方法はとてもシンプルで『URLを1つに統一する』です。
ちなみに以下のURL4パターンでそれぞれ同じページが開いてしまう場合は要注意です。もし該当する場合は「wwwの有無」はどちらでも構いませんので必ず「httpsでの接続を強制」しておきましょう。
http://example.com
https://example.com
http://www.example.com
https://www.example.com
個人的に推奨している状態は、以下3つのURLへアクセスがあった際に
1. http://example.com
2. http://www.example.com
3. https://www.example.com
すべて「https://example.com」へ自動転送がかかる状態です。閲覧ユーザーによっては「www」自体に馴染みがない場合もありますし、見た目もシンプルで入力ミスも防げるので懸命な選択と言えます。
ただ、場合によっては「www」を表示させた状態でSSL接続を強制させたいという要望もあります。
1. http://example.com
2. http://www.example.com
3. https://example.com
でアクセスがあった際に「https://www.example.com」へ自動転送をかけるパターンです。インターネットのイメージが『www(World Wide Webの略)』だった時代もあったり、名刺やパンフレット等へ刷る際にwwwを付けた状態で掲載したいのでウェブサイトも「wwwあり」にしたいという方も多いようです。
ちなみにエックスサーバーやMishostといった一般的なレンタルサーバーであればwwwの有無やSSL状態に影響なく自由に設定できるのですが、さくらサーバーは特殊な仕様になっているので『httpsかつwwwありで統一する場合』のみコントロールパネル上で少し変わった設定が必要となります。
もちろん「wwwなし」ならさくらサーバーでも複雑な設定は不要となります。上記より、今回の記事は『さくらサーバー上にインストールしたワードプレスにwwwありでhttps接続を強制したい方へ向けた内容』です。
独自ドメインはサンプルとして「example.com」を使った上で説明を進めていきます。ちなみに本手順では「http」へのアクセスを「https」にリライトを行う処理も含んでいますので割と設定が難解です。
以下の手順は既に「wwwなし運営(http://example.com)」でウェブサイトを公開している状態が前提条件となります。併せて補足するまでもありませんが、作業に入る時は可能な限り本番ドメインで設定をする前に「余っている独自ドメイン」で完全複製したダミーサイトを作って事前検証を行えばより安全に作業を進められるでしょう。ぜひご参考くださいませ。
目次
さくらサーバーで運用しているワードプレスをSSL接続「https」かつ、URL表記を「www」有りで統一する方法について(完全版)
ワードプレスDB内のURLを事前にwwwありへ置換
作業前に現在運用しているワードプレスのDB情報を入れ替えましょう。データベースはwwwあり用で新たに追加して、旧データ(wwwなし分)も残しておけば、万が一の場合も安心して作業を進められます。
この手順は省略しても問題なく動作するパターンもありますので状況に応じてお試しくださいませ。
wwwなしで追加したドメインにSSLを発行(確認方法&発行手順の両方を記載)
まずはwwwなし「example.com」の設定を確認していきます。「変更」ボタンから詳細設定に入ります。
wwwなしで追加したドメイン設定(example.com)に対してSSL証明書が発行済みになっている場合は「設定状況の確認用」に下記画面をご活用ください。この段階で絶対に外せないポイントは『マルチドメインとして使用する(推奨)』が選ばれている状態で「SSL証明書が発行されている」という点です。
もし、まだSSLが発行できていない場合は『マルチドメインとして使用する(推奨)』の設定状態になったままでドメイン一覧に戻って証明書の「登録」ボタンから「SSL証明書を発行」を進めてください。
以下の画面が開いたら「無料SSLの設定へ進む」をクリックしてSSL証明書の発行を行ないましょう。
SSL証明書の発行には30分程度時間を要する場合がありますのでしばらくお待ちください。正式にSSL証明書の発行が完了した後にさくらインターネットから発行完了のお知らせメールが届きます。
以上で「wwwなし」側の設定が完了となります。
※後ほど一部の設定変更が必要です
wwwあり側へwwwなし用で発行した共通のSSL証明書を適用
example.com(wwwなし)側のSSL発行が完了後したらwww.example.com(wwwあり)側にも共通のSSLを当て込むために「更新」ボタンを押して、exmaple.com(wwwなし)側のSSL証明書のバックアップデータ(server.crt&server-key.pem)をダウンロードしていきましょう。
SSLの設定画面が開いたら「証明書のダウンロード」をクリックしましょう。そして「秘密鍵のダウンロード」もクリック。両方とも各々でファイルが落ちてきますので、デスクトップ等へ保存してください。
▼証明書のダウンロードで落ちてくるファイル
server.crt
▼秘密鍵のダウンロードで落ちてくるファイル
server-key.pem
上記でダウンロードした2つのファイルをwwwあり(www.example.com)設定へ適用していきます。
www.example.comの「登録」ボタンをクリックしてください。www.exmaple.com側もexmaple.comと同じく詳細設定では『マルチドメインとして使用する(推奨)』が選択されている状態にしておきます。
画面が開いたら「詳細設定」ボタンをクリック。
詳細設定が開いたら「秘密鍵(server-key.pem)」をアップロードしていきます。「ファイルを選択」ボタンをクリックしてデスクトップなどローカルPC側へ保存しているserver-key.pemを選んでください。選択が完了した後に「秘密鍵をアップロードする」をクリックしましょう。
server-key.pemのアップロードが完了すると証明書のイントール画面に進みます。証明書のインストール方法はさきほどDLした証明書(server.crt)をテキストエディタで開いて文字列を貼り付ければOKです。
その後に中間証明書のインストールも求められますので、以下の文字列を貼り付けてください。
▼中間証明書(Let’s Encrypt Authority X3)
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
以上で、wwwあり側のドメイン設定にwwwなしで発行済みのSSL証明書をインストールできました。
少し時間が経てばSSL設定が反映されます。(反映には30分以上かかる場合があります)
wwwなし、wwwありのドメイン設定を変更
次に各ドメイン設定(example.comとwww.example.com)を「変更」ボタンから変更していきます。
wwwあり側のSSLが発行される前に撮ったキャプチャです↓
example.com側で変更する箇所↓
www.example.com側で変更する箇所↓
上記の通り、example.com(wwwなし)、www.example.com(wwwあり)を共に『wwwを付与せずマルチドメインとして使用する(上級者向け)』へ切り替えます。以上でサーバー側の設定が完了です。
htaccessにリライトする処理を追加
次に「http」を「https」、「wwwなし」を「wwwあり」にリライトする処理を追記していきましょう。htaccessはwp-config.phpと同階層に保存されていますのでFTPで接続をして上書きしてください。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [OR,NC]
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
</IfModule>
上記内容をhtaccess内へ追記すればOKです。
wp-config.phpの最上部へ条件分岐を追記
そして、httpへのアクセスをSSLかつwwwありへ強制置き換えするための記述をワードプレスにも追記。
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
$_SERVER['HTTP_HOST'] = 'www.example.com';
$_SERVER['SERVER_NAME'] = 'www.example.com';
$_ENV['HTTP_HOST'] = 'www.example.com';
$_ENV['SERVER_NAME'] = 'www.example.com';
}
この記述は必ず『wp-config.phpの最上部』へ追記してください。
ワードプレスをマルチサイト化している場合は、以下のドメイン箇所もwwwありへ置き換えましょう。
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
マルチサイト化していない場合はこの箇所は省略してください。
最新式の無料プラグインを事前公開
WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
→ 改良されたプラグインを確認する