フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【WordPress】WEBサイトをSSL対応する方法

SSL
WordPress
リダイレクト

既存のサイトを常時SSL化する際、.htaccessへの記述での注意点を解説したいと思います。

httpsへのリダイレクトの記述

SSL化をした際、.htaccessに以下を記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

下層ページがhttpsへリダイレクトされない

WordPressサイトの場合、WordPressをインストールした際、必須で.htaccessが作成され、以下のような記述がされています。

# BEGIN 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
<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

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

しかし、この場合だと、トップページはSSL化で統一されますが、下層ページはhttpのままでhttpsへリダイレクトされません。

これはドメインのみでアクセスした場合以外は、WordPressのリダイレクトルール(# BEGIN WordPress ~ # END WordPress)が適用されるため、[L] フラグで .htaccess の実行が終了してしまうためです。 

WordPressサイトの正しいSSL記述

さて、難しいことは抜きにして下層ページでhttpsへリダイレクトされない場合、.htaccessの記述を以下のように書き換えます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# BEGIN 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

たったこれだけです。先ほどの例と違うのは記述する順番が違うだけです。

先にhttpsへのリダイレクト設定の記述を設定し、その後、WordPressの標準の記述を設定します。

SSL化した際、トップページだけ確認して正しく動作していると思い込み、後日下層ページを確認してみるとSSL化されていない。なんてことにならないように、記述する順番に気を付けましょう。

まとめ

いかがでしたか?
WordPressで作られたWebサイトをSSL化した際は忘れずにリダイレクト設定するようにしましょう。