httpへのアクセスをhttpsに301リダイレクト(転送)させる方法

コーディング

最近は、urlに「https://~」と表記してWebサイトのセキュリティに対応した常時SSLでの運営が主流になりました。これに対応する中で次のような悩みはないでしょうか?
「常時SSLを導入したのだが、検索結果や、被リンク先がhttpのままなのでhttpとして表示されてしまう」、「新規サイトを立ち上げで常時SSLを設定したが、httpにもアクセスできてしまうのでhttpsのみ表示されるようにしたい」等。
実際SSLを設定しているにも関わらずhttpでアクセスできてしまう状態はせっかくの安全対策の効果が損なわれる可能性もあるので対策しておくべきです。
そこで、今回は.htaccessへの設定でhttpからhttpsに恒久的にリダイレクトする方法をご紹介します。WordPressでサイトを運営している場合の設定方法も紹介しますので是非ご確認ください。

.htaccessへの設定

httpからhttpsに恒久的な301リダイレクトを設定する場合は、webサイトの第一階層に.htaccessというファイルを配置してここに設定しておきます。
.htaccessについては「.htaccessでページ単位、ディレクトリ単位の301リダイレクト(転送)を設定する方法」という記事内の「.htaccessについて」で紹介しておりますのでそちらをご確認ください。
第一階層に設定しておくとその下層のディレクトリに配置されたWebページにも設定内容が反映されます。
それでは、早速設定方法をみてみましょう。

httpからhttpsに恒久的301リダイレクト

httpにアクセスがあった場合httpsに301リダイレクトさせるには.htaccessに次のように指定します。

RewriteEngine on と記載されいる部分は、アクセスのあったURLを、正規表現で書き換える「Rewrite機能」をオンにするという意味の記述です。
もし、.htaccess が以前から配置されている場合、すでにこの指定がされているかもしれません。その場合は、RewriteEngine on 以降に

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

を記述すれば大丈夫です。

WordPressの場合の設定方法

設定の変更

WordPressの場合はまず管理画面で設定の一般の次の項目がhttps://~と記載されているか確認しておく必要があります。

hpps

  • WordPressアドレス(URL)
  • サイトアドレス(URL)

http://~の場合はhttpsに書き換えます。

記事やテンプレートの内部リンクを確認

記事やテンプレートの内部リンクでhttp://~で記述されている部分がないか確認し、ある場合はhttpsに書き換えておく必要があります。.htaccessにリダイレクト設定をするとこういった内部リンクもリダイレクトされますが、無駄にリダイレクト処理されることでサーバーへの負荷や表示速度への影響も考えられます。忘れられがちな部分ですので、もし書き換えるのならばはじめにしておくことをおすすめします。

.htaccessに設定

WordPressの場合は、インストール時点で .htaccessが生成されRewriteEngine Onも設定されるので、上記のように

RewriteCond %{HTTPS} off
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

部分を追記します。
以上が、WordPressにおけるhttpsの301リダイレクト設定になります。