WordPressのSSL化で.htaccessに301リダイレクトを記述する位置に注意

 

少し前の記事で常時SSL化の対応について書いたのですが、
その時、悩まされた場面がありました。

 

常時SSL化対応で.htaccessへリダイレクト処理を記述したのですが、

WordPressのsingle.phpやcategory.php
301リダイレクトが効かない
という残念な感じに...。

 

301リダイレクトの記述をしたのに効かない

 

一通り作業をして本番環境で動作確認!という時に
.htaccessに301リダイレクト処理を記述したのに、singleやcategoryで効いていないことが発覚...。

ちゃんと記述したし、他のページはうまく動いてるのに!!!

 

ちなみに301リダイレクトの記述内容はこんな感じ。


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

 

この記述をしているのに、 single.phpやcategory.phpなど特定のページになぜか効かないんです...。

DBや.htaccessファイルを触ったり、本番環境での作業も多いのでうまく動作しないと非常に焦る...。

いろいろ検索してみましたが原因が分からず、その場にいた先輩に相談。

どうやら.htaccessへの記述位置が問題だったようです。

 

 WordPressの301リダイレクトがうまくいかないのは
記述位置のせいだった

 

WordPress.htaccessを開いてみると、
おそらく下記のように記述されているかと思います。

WordPressがインストールされているディレクトリや位置によって多少違いはありますが、だいたいこんな内容のはず。)

 

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

 

 で、この.htaccessに301リダイレクトの記述をするわけですが

 

どの位置に書けばいいのか分からなかったのです...。

 

上記の記述は、WordPressが動作するために
大事な記述なんだということは頭にあったので、

とりあえず下に書いておけばいっか~(・ω・)

 

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

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

 

(・ω・)

なんで動かへんねん。。。
こちとら毎日サービス残業で早く帰りたいのに。。。

(;ω;)

検索してもわからない。。。
もうお家に帰れないかもしれない。。。

 

 

一番上に記述してみる

 

先輩に相談したところ
「一番上に書いてみたら~?」って。

 .htaccessはデリケートなファイルなので、
意外と記述位置も大事だったりする とのこと。

 

ええい!一番上に書いてやったんだから
ちゃんとリダイレクトせい~!(;ω;´)

 

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

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

 

リダイレクトした(・ω・)♡

 

 

まとめ

 

301リダイレクトの記述に限らず、
.htaccessへの記述は位置に注意した方が良さそうです。

.htaccessはサイトを真っ白にクラッシュさせてしまうこともあるので
扱いには気をつけましょうね...。

 

私はおかげでお家に帰れました。
まぁいつも22時とかなんですけど。