SSL化で.htaccessにhttpからhttpsへリダイレクト設定してもうまくいかない、500エラー時に確認すること

昔に比べてSSLの導入は敷居が低くなったと思います。googleでもWebサイトを常時SSL(https)にすると、SEO(検索順位)を優位にするというアナウンスもありましたので、切り替える方も増えていると思います。ここでは.htaccessにリダイレクト設定をしたけれど、リダイレクトしない、もしくは500エラー画面になり、サイトが全く表示されなくなった場合に確認すべきことを書きたいと思います。

スポンサーリンク

トップページしかリダイレクトしない

WordPressの本体をドメインの直下に置いていて、「.htaccess」もちゃんと書いていて、TOPはリダイレクトするけれど、下層に入るとhttp://のままで、https://にならないという場合は、リダイレクトを書いている位置を確認してみてください。

「.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

WordPressで吐き出されている命令です。
これの上にリダイレクトの設定を書くようにしましょう。

<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

サブディレクトリにWordPressを置いている場合

ドメイン配下に新しくフォルダを作り、その中にWordPressを入れて、実際の表示はフォルダなしでというパターンで設定している人は多いと思います。
WordPress以外にもファイルを置いたりする場合は、WordPressのファイルとごちゃごちゃになってしまいますからね。

WordPress本体はwp配下に入れている。
https://shiritai.net/wp/

表示アドレスは下記にする
https://shiritai.net/

サブディレクトリからのURLの設定は下記をご確認ください。

フォルダを作りサブディレクトリ(/wp/)にインストールしたWordPressをドメイン直下に表示【ルートディレクトリの変更】
WordPressをインストールするとき、フォルダを作ってその中にWordPressのデータを入れたりすることがあると思います。 例えばwpフォルダとかを作ったり。 そうすると、アドレスが となってしまいます。 そう...

サブディレクトリにWordPressを入れている場合、今修正しようとしている.htaccessはほんとに正しいファイルでしょうか?
もしかして.htaccessを1つ上の階層にアップしたことを忘れていませんか?

もしも上記の/wp/フォルダ内にWordPressを格納しているとしたら
wpフォルダ
index.php
.htaccess ←これを修正する

もしも同じ階層に
wp-config.php
wp-contentフォルダ
.htaccess ←これは違います

があって、この.htaccessに書いていたら、書く場所が違いますので、1つ上の階層にある.htaccessにリダイレクト設定を書いてアップし直してみましょう。

パーミッションは正しいですか?

パーミッションは「604」が推奨されています。「644」になっていませんか?
レンタルサーバーによっては「644」が推奨されている場合もありますが、もしうまくいかない場合は「604」に変えてみてください。
エックスサーバーは「644」「604」どちらでもよいみたいです。
ロりポップは」「604」を推奨しています。

.htaccessの保存形式

文字コードと改行コードは正しいですか?
WordPressがUTF-8だからと思って、何も考えず
UTF-8
CR+LF
で保存してアップしていませんか?UTF-8Nがある場合は、こちらにしてください。
またはSHIFT-JISで保存してアップするとうまくいく場合がありますので試してみてください。
できたらアップされている.htaccessを例えばエディタソフトのTeraPadを開いてドラッグでいれてください。
そして、文字/改行コード指定保存をクリックすると、保存形式が出てくると思うので、UTF-8なのかSHIFT-JISなのかを念のため確認してみてください。
基本はBOM無しなら平気なはずですが、保存されている文字コードにしておけば問題ないはずです。

Macで「mi」をお使いの方は、下記でBOMの確認ができます。

Macの「mi」で文字コードをUTF-8 BOMなし(UTF-8N)で保存する方法
Macの有名なエディタ「mi」で文字コードをUTF-8 BOMなし(UTF-8N)で保存する方法の解説です。

スペルミスはありませんか?

リダイレクトの命令は正しいですか?
たいていの人が誰かのサイトからコピペしていると思います。それはよいと思いますが、もしかして1文字くらいスペルミスがありませんか?

こんな感じの命令です。

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

ただ自分の場合ですが、なぜかこちらだとトップ以外がリダイレクトされないという事態がありました。
トップからリンクをたどれば平気だけれど、例えばカテゴリページのアドレスをコピペしてブラウザの新規タブに貼り付けたら、ふつうにhttp://で表示されてしまいました。リダイレクトされていない状態です。
サブディレクトリが問題とは思いませんが、そんなときは

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

を試してみてください。これでうまくいくこともあると思います。

.htaccessの最後は空白

.htaccessの最後の行は空行としなければなりません。
リダイレクトの命令の後ではなく、.htaccessの最後の行です。
セキュリティ関連の物も色々書いて一緒にアップした場合、一番下が空行になっているか確認してください。

.htaccessが使える環境ですか?

こちらはWordPressを使っていれば大丈夫かと思いますが、お使いのサーバで、.htaccessの設置が許可されていないということはありませんか?
サーバ会社に問い合わせてみたり、マニュアルを確認してみてください。
また.htaccessの機能を制限されている可能性もあったりします。
リダイレクトにmod_rewriteというサーバのモジュールを使っていますが、もしこのmod_rewriteが動作しないサーバでしたら、当然リダイレクト処理を行うことができません。

念のために確認したい場合は、下記コードを入れてみてください。

<IfModule mod_rewrite.c>
  ErrorDocument 404 http://www.yahoo.co.jp/
</IfModule>

自分のサイトで絶対ないページアドレスを入れてみてください。リダイレクトでyahooに飛べば、機能するということになります。

最後に

リダイレクトが機能しないだけならまだましですが、500エラーで一切ページが表示できないとかなり慌てますよね。
バックアップを取っていれば、すぐ戻せばよいと思いますが、バックアップし忘れたというときはとにかく一度怪しい部分を消して再度アップしてください。
その際のチェックポイントは保存するときの文字コードと改行コードです。UTF-8なのかSHIFT-JISかは気をつけてください。
WordPressで、サイトの表示アドレスを変えている場合は.htaccessがなくなるとアドレスが思ったものにならないと思います。
なので、.htaccessをいったん削除してしまうという作戦は、慎重になったほうがよいと思います。
WordPressを使っておらず、SSL化のためにリダイレクトの命令だけを書いてアップするという場合は、いったん削除して間違い探しを丁寧にしながらアップし直せばきっと最後はうまくいくと思います。
慌てずに、丁寧に確認していきましょう!

コメントをどうぞ

  1. zakka より:

    中々うまくいかず困っていたところ辿り着きました。

    コードを書く場所が他のサイトには書いていなかったのでおそらくそこと書き方が違っていたと思います。

    ありがとうございました。

  2. 知りたいねっと管理人 より:

    zakkaさま

    書き込みありがとうございます。
    お役に立ててよかったです。
    エラーになると慌てますし、どうしたものやらと、途方にくれますよね。。

    こちらこそお礼のコメントうれしいです。
    ありがとうございました!

  3. IDE より:

    トップページしかリダイレクトされなかったので悩んでいましたが、ズバリ問題が解決しました。

    ありがとうございます。
    私の場合は、リダイレクトのコードの位置が問題でした。

    もっとはやくこの記事に出会いたかったです。

  4. 知りたいねっと管理人 より:

    IDEさま

    コメントありがとうございます。解決できて何よりです。
    トップページのみしかリダイレクトせずはちょっと困りますよね。
    そういった意図ならよいですが、、

  5. AH より:

    トップページのみしかリダイレクトせず困っていました。
    こちらの記事を参考に設定したところ改善されました。
    有意義な記事を公開いただきありがとうございます。

  6. 知りたいねっと管理人 より:

    AHさま

    コメントありがとうございます。この記事が参考になりなによりです。
    リダイレクトが中途半端だと、結局意味が無いわけで、とほほですよね。