301リダイレクトの設定
さくっと、プラグインで設定する予定だった301リダイレクト。できなくて1日悩みました。でも無事リダイレクトできたので、その手順をまとめておきます。
プラグインRedirection
まず最初に、プラグインを使って301リダイレクトの設定をする予定でした。でもエラー でうまくいかず。「エージェント: Redirection を使っていない」というエラーです。
それで、いろいろ調べた結果、プラグインRedirectionは新しいページではなく、古い方のページでの設定が必要だということ。(私は新しいページで古いページの設定をしていました。)
なので、古いページがワードプレス を使っていない場合、このプラグインでは設定ができません。
プラグインの設定自体はとても簡単にでき、こちらのyoutubeがわかりやすかったです。
管理画面から、ツール > redirection
2箇所チェックをいれて、セットアップを続行をクリック。
セットアップ完了をクリック。
古い方のurlと新しいurlを入れるだけです。
.htaccessに書き込み
ssl化にともない、httpからhttpsへリダイレクトさせたい場合の書き方です。
htaccessからコードを追記していきます。
ftpなどから、htaccessを探して、.txtをつけファイル名を変え、開けるようにします。
(※表示されてない場合は、隠れている場合もあります。)
htaccess.txtをエディタで開き、以下のコードを追記します。
これで完了です。
# 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に元から上記のような記述があるので、
その上にリダイレクトのコードを書きます。
なので、リダイレクトのコードが一番上になる感じです。
[httpからhttpsへ]のリダイレクト書き方
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
[httpからhttpsへ]プラス[wwwなし]のリダイレクト書き方
httpsにリダイレクトして、wwwなしにする設定。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
[httpからhttpsへ]プラス[wwwあり]のリダイレクト書き方
httpsにリダイレクトして、wwwありにする設定。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
リダイレクトが効かないとき
htaccessにコードを書いても、リダイレクトが効かないことがあります。
その場合、ほかのhtaccessと競合してしまっている可能性があります。
基本はwp-contentsなどと同じ階層にある、htaccessファイルに書きますが、
親要素にhtaccessがある場合、中身を確認して大丈夫そうなら削除するか、
もしくは、そちらにリダイレクトコードを書きます。(他のファイルに影響ない場合)
まとめ
こんな間違えをするのは、私だけかと思いますが、プラグインで、リダイレクトを設定する箇所は古い方(リダイレクト元)のページです。新しいページ(リダイレクト先)の方では設定しません。