WordPressでhttpからhttpsへリダイレクトする場合.htaccessに記載します。SiteGuard WP Pluginを使っている場合、は注意点があるのでご説明します。
まず最初に完成形をお見せします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# BEGIN httpをhttpsに統一 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> # END httpをhttpsに統一 #SITEGUARD_PLUGIN_SETTINGS_START #==== SITEGUARD_RENAME_LOGIN_SETTINGS_START <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^wp-signup\.php 404-siteguard [L] RewriteRule ^wp-activate\.php 404-siteguard [L] RewriteRule ^login_03248(.*)$ wp-login.php$1 [L] </IfModule> #==== SITEGUARD_RENAME_LOGIN_SETTINGS_END #SITEGUARD_PLUGIN_SETTINGS_END # BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、WordPress フィルターによってのみ修正が可能です。 # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
リダイレクトのために.htaccessを修正します。以下の1〜7行目を追加します。
なお、SiteGuard WP Pluginという管理画面のURLを変更したりするプラグインを使っている場合、9〜19行目が記載されていると思います。ポイントはこれより上にリダイレクトのための追記をしないといけないということです。
これを逆にしていると、Site Guardで指定している以下のログイン画面のURLにhttpでアクセスすると、
http://proggy.jp/login_03248
以下にリダイレクトされますが、404(存在しない)エラーのページが表示されます
https://proggy.jp/wp-login.php
しかし、上のコードの通り正しい順番にしている場合は、同じように以下にアクセスしたら
http://proggy.jp/login_03248
以下にリダイレクトされます。つまりhttpsになっただけです。画面にはちゃんとログイン画面が表示されます。
https://proggy.jp/login_03248
21〜35行目に相当する、WordPress本体が生成する部分よりも上に記載しよう、という記事は多かったのですが、SiteGuardを使っている前提の記事がなかったので、本記事で説明しました。