httpsでのアクセスができるようになりましたが、この時点ではまだhttpでもhttpsでもアクセスできる状況です。
これを全てhttpsに一元化しようと考えました。そのために行わなければならないことをあらかじめまとめておくと、
- WordPress内の記事のURLを変更
- WordPress内のリンク情報を変更
- 301リダイレクトの設定
の三つがあります。
まず最初に行うのは、一番簡単(?)なWordPress内の記事のURLをhttpsに変えること。
WordPressのダッシュボードを開き、そこから「設定」→「一般」と辿って「一般設定」画面を開きます。
そこに「WordPressアドレス(URL)」と「サイトアドレス(URL)」の二つのボックスがあるので、そこにhttpsから始まるURL(うちの場合はhttps://boota.mydns.jp/blog)を記入します(既にhttpで始まるURLが入っていると思うので、sを足すだけでOKのはずです)。
これをすることでWordPress内の各記事のURLのプロトコル部分がすべてhttpsに自動で書き換えられるそうです。
上記リンク先の情報だとこれで記事のURLはhttpsにできるのですが、その他のリンク情報(例えば画像ファイルとか?)へのリンクはhttpのままになってしまい、場合によってはリンク切れになってしまう恐れがあるそう。
そこでそうした派生リンクの情報も同様にhttpsに書き換えてしまいます。
これが二つ目の手順ですが、その方法も上記のリンク先で紹介されています。
そこでは「サイト内の内部リンクや画像のリンクまで一括で変更してくれるプラグイン「Search Regex」が便利です。」と説明されており、もちろん僕もそのままそれを利用してhttpをhttpsに書き換えました(笑)
プラグインですのでインストールは普通に行い、有効化してhttpをhttpsに書き換える指定をするだけです。
Search Regexの設定画面を開いたら、「検索と置換」タブを開きます。
その中に検索ボックスと置換ボックスがあるので(画像の1と2)、検索に「http」を、置換に「https」を入力。やることはこれだけです。
他のところはいじらないように気を付けましょう。必要のないところには触れないのが鉄則です!
入力だけしたらまずは「検索」ボタンを押して置き換えされる文字列をいくつかプレビューし、問題がなければ(というか、なさそうなら)「置換」ボタンを押下してWordPress内の全てのhttpをhttpsに置換します。これだけで完了。
これで各記事から貼られているリンクも全てhttpsに置き換えられました・・・はずだったのですが、ここで問題発生。
問題というのは、もともとのリンクがhttpsであった場合。
この場合、先の置換によってリンク先のURLの先頭がhttpssになってしまうのです。
でも、それはそうですよね。
だってhttpをhttpsに置き換えるということはつまり、httpsの文字列に含まれる「http」部分だってhttpsに置き換えられてしまうわけですから。
しかし理由に納得できたところで問題は解決しません。このままではhttpsへ張ったリンクがリンク切れになってしまうのです。
そこでもう一度Search Regexを開き、今度は検索ボックスに「httpss」を、そして置換ボックスに「https」を入力して置換。
これでhttpss文字列がすべてhttpsに置き換えられるので、リンク切れをなくすことができます。
二つ目の手順まで終えれば、ブログ内のコンテンツは全てhttps化できたことになるのですが、最後にもう一つやらなければならない大きな仕事が残っています。
それは、httpとhttpsの両方でアクセスできてしまっている現状を、httpsのみのアクセスに一元化するということ。
これ、つまりリダイレクトが3番目の(そして最後の)手順ということになります。
この301リダイレクトをするには
- .htaccessの編集
- apacheの設定
が必要になります。
まずは.htaccessの編集ですが、同ファイルはWordPressをインストールしたときに自動で作成されているはずです。おそらくほとんどの場合、WordPressのトップディレクトリにあるでしょう。
このファイルの中身はただのテキストファイルなので、viなどのテキストエディタで開いて、同ファイルの一番最初に次の文字列を加筆します。
<IfModule mod_rewrite_c>
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
これ、必ず同ファイルの最上位に記述します。
うちの環境では.htaccessには何も記述されていませんでしたが、環境によってはWordPress用の設定が書き込まれている場合があるようです(記述のある方が普通なのかも?)。
そうした場合でも、上記記述は必ず先頭に加筆します。
次にapacheの設定ファイルを編集します(これをしないと.htaccessが有効に動作しません)。
apacheの設定ファイルは通常は/etc/http/conf/httpd.confなのでこれをまたまたviなどのテキストエディタで開きます。
同ファイル内のあちこちに記述されている「AllowOverride none」を探し出し、その文字列のうち「none」の部分を全て「all」に書き換えて保存します。
文字列は分散しているので、viのコマンドモードから「/AllowOverride」で文字列を検索して置き換えるのが現実的でしょう(目視で探していくのは大変です)。
書き換えて保存できたらapacheを再起動します(systemctl restart httpd)。
これで301リダイレクトの設定は完了したはず。
試しにhttp://boota.mydns.jp/blogでサーバにアクセスしてみます。
safariの場合、httpでアクセスするとアドレスバーに「安全ではありません」みたいな文章が表示されます(httpsでアクセスすると表示されない)。
なのでhttp://boota.mydns.jp/blogでアクセスし、「安全ではありません」が表示されないこと、そして表示されたページのURLがhttpsになっていることをチェックするわけです。
無事にhttps://boota.mydns.jp/blogにリダイレクトされていれば、https一元化はの手順は全て無事に完了となります。