XserverのSSL設定方法を紹介します.htaccessにコピペする位置が重要

Xserverにおいて常時SSL化する際に.htaccessファイルにコードを記述するのですが、記述する位置を間違えるとリセットされてしまい常時SSL化ができません。
WordPressで使われているコードの範囲外書かないといけません。単純な話ですが、陥りやすいミスなので設定方法を紹介します。

SSLとは

▲フリー素材ぱくたそより

SSL(Secure Sockets Layer)とは、インターネット上で暗号化通信する仕組みのことです。

以前はクレジットカード情報など重要な情報をやり取りするときに用いられていた技術ですが、近年では重要な情報をやり取りしない場合でも、導入が推奨されています。

暗号化通信はGoogleで推奨されており、Googleによるサイト評価の指標のひとつとされています。

暗号化されているかどうやってわかるの?

▲たまに見る表示

ブラウザのアドレス欄でたまに見かけませんか。

「安全ではありません」

「保護されていない通信」

これらの表示がされるサイトは暗号化通信されていないサイトということになります。

XserverのSSL設定方法

▲Xserver管理画面より

Xserverの管理画面にSSL設定という項目があります。

詳しい方法はこちらから

.htaccessでリダイレクト

▲.htaccess編集

SSL設定が終わっただけでは、常時SSLであるhttpsへ接続されません。

webサイト全て常時SSL化する場合、.htaccessというファイルでhttpsをリダイレクトする設定が必要です。

XserverでのWorePressの初期設定は以下のように記述されています。

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

初期設定の.htaccessファイルに以下を記述してくださいと公式ページにあります。

常時SSL化の方法

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

どこに追記すればいいのか悩みます。

初期設定のファイルをよく見てみると、コメントで気になることが。

「これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。」

つまり、”BEGIN WordPress” から “END WordPress”の間に記述してもリセットされますよという意味。

範囲外に書きしょう

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode

#SSLへのリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

範囲外に書けばリセットされないので問題ありません。

私は#BEGIN WordPressよりも前に記述しました。

不明の404エラーが

▲原因不明の404エラー

常時SSL設定後に原因不明の404エラーが発生することがあるようです。

私の場合は、WordPress管理画面からパーマリンク設定を上書き保存しただけで解消されました。

まとめ

.htaccessファイルはほとんど触ることがないファイルですが、httpsをリダイレクトするために編集しましょう。なんとなく追記・修正していいのか不安になりますが、常時SSL化設定では必要です。

webサイトの常時SSL化は必須の技術となっています。サイト評価を高めるためにも、webサイトの常時SSL化を実施してみてください。