WordPressのSSL化対応時にhtaccessを使ったリダイレクトの書き換えで気を付けるべき3つのこと。
WardPressではパーマリンクを設定すると自動的にhtaccessというファイルが生成されます。普段使っている分には時に気にしなくても良いのですが、SSL化対応等で301リダイレクト等を実装する場合は書き方に注意が必要です。
規則にそって書き換えないと、ページが表示されなかったり、書き込んだソースコードが消えてしまったりします。
今回はリダイレクトをhtaccessにて設定する際に気を付けるべきことをご紹介します。
WordPressのSSL化対応時にhtaccessを使ったリダイレクトの書き換えで気を付けるべき3つのこと。
元のソースコードは絶対に消さない
WordPressではパーマリンクを設定すると自動的に以下のような.htaccessファイルが自動で生成されます。
こちらは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
追記は元のソースコードより上に書く
リダイレクト等の設定を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/END WordPress内にソースコードを書かない
SSL化のリダイレクトの際に使用するコードを例として使いますが、追加する新しいリダイレクト用のコードは# BEGIN WordPressと# END WordPressには書かないようにします。
WordPressの何かしらのイベントがトリガーになり、上記内のコードはすべて上書きされてしまいます(追加したコードは消えます)。
上書きされるまでは正常にリダイレクトされるので気付きにくいですが、間違って中に書いてしまうと、しらない間に上書きされてしまい、リダイレクトされなくなってしまうので注意が必要です。
/*SSL化対応*/ <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> /*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
まとめ
今後SSL化対応等によりhtaccessファイルを弄る必要がでてくる方が多く出てくるかと思いますが、いくつかのサイトでもhtaccess部分だけあまり丁寧に書かれていないような気がします。
htaccessはapacheのシステムを管理するファイルであり、下手に動かすとすぐエラーが出てくるので注意しながら書き込んでいく必要があります。上記3点を守ることで、ワードプレスでの頻出な問題を回避できます。