サイトが引っ越しした時や、サイトを立ち上げたばかりの時など、.htaccessを使って301リダイレクトを設定することがあります。
301リダイレクトは、一時的ではなくページの評価をそのまま恒久的に転送するもので、いろんなケースで使われ、サイトの新規設置の時にもやるケースが結構あるので覚えておくと便利です。
インハウスデザイナーだと、外部に依頼するより自分でやった方が速い的な時にやったりします。
今回の記事では、このリダイレクトについて
- .htaccessの書き方の基本。
- やっておきたいリダイレクトの記述。
- 色んなケースで使うリダイレクトの記述。
の内容です。是非この記事を参考にリダイレクトについての知識が得れるよう、是非最後までご覧ください。
mod_rewriteモジュールの基本
リダイレクトの基本形は以下のような記述です。
<IfModule mod_rewrite.c>
RewriteEngine on
:
ここにリダイレクト処理を記述
</IfModule>
.htaccessでのリダイレクト処理は、mod_rewriteモジュールを使用して行います。
ざっくりでいいので記述の意味を覚えておきましょう。
<IfModule mod_rewrite.c></IfModule>
使っているWebサーバー上で「mod_rewrite」というモジュールが利用可能な場合のみ、このタグ内の設定値を読み込むようにできる設定の囲み。
ほとんどのWebサーバーでmod_rewriteモジュールが利用可能ですが、mod_rewriteモジュールをまれに利用できない環境があるらしいです。
RewriteEngine on
mod_rewriteモジュール起動の宣言式です。
RewriteCond {条件}
どのような際にリダイレクト処理するかどうかの、条件を指定。一緒になっているRewriteCond
は RewriteRule
毎に必要なので省略せずに毎回書く必要があります。
RewriteRule {パターン} {置換内容} [R, L]
どう書き換えるのかを指定でき、{パターン}
に一致した部分を{置換内容}
に書き換え。
[R={リダイレクト方式}]
と、どの方式でリダイレクトさせるかも指定可能です。[ ]の中にLをつけ、URL書き換え処理を終了します。
注意点
記述ミスがあると設置したディレクトリ以下が全て500エラーになるので、.htaccessの書き換え時には、必ずバックアップを取ってから行いましょう。
とりあえずバックアップをしてから記述しましょう。
やっておきたいリダイレクト
サイトやブログを作ったら、真っ先にやっておきたいリダイレクトです。SSL化の設定が完了したらやっておきましょう。
ちなみに、SSL化の重要性は以下の記事で解説していますので、こちらもあわせてご覧ください。
関連記事 常時SSL化の重要性と注意すべきポイント
httpからhttpsへのリダイレクト
http のURLから https への変更が完了したら、全てhttpsのドメインにリダイレクトがかかるように設定しましょう。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
サイト引越し時に設定するリダイレクト
サイト引越し時に行うリダイレクトの記述です。
HTMLをWordPress化した時
HTMLファイルをWordPressにページテンプレートとして読み込んだ時に使うリダイレクトです。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)\.html$ /$1[R=301,L]
</IfModule>
別ドメインへドメイン単位でリダイレクト
https://www.AAA.com
というサイトから、https://www.BBB.com/
というサイトに引越しした場合に使うリダイレクトです。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{http_host} ^www.AAA.com
RewriteRule ^(.*) https://www.BBB.com/$1 [R=301,L]
</IfModule>
wwwのあり・なしを統一するリダイレクト
ブログやサイトを立ち上げた時に行う記述です。うっかり忘れてしまうと重複コンテンツになってしまうので、wwwあり・なしのどちらかのルールで記述しましょう。
wwwありに統一するリダイレクト
例えば、ドメインを https://www.dubdesign.net/
のように、https:// の後にwwwが入る場合の記述です。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
wwwなしに統一するリダイレクト
こっちは、https://dubdesign.net/
のようにwwwばない場合の記述です。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]
</IfModule>
サブディレクトリだけwwwありにするリダイレクト
ちょっと特殊なリダイレクトですが、例えばルートドメインがhttps://dubdesign.net/
で、そのサブディレクトにhttps://dubdesign.net/sub/
があったとします。
そのサブディレクトリの https://dubdesign.net/sub/
だけ、wwwありのhttps://www.dubdesign.net/sub/
にする時の記述です。記述が完了した.htaccessを、そのサブディレクトリの https://dubdesign.net/sub/
に設置したら完了です。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/sub/$1 [R=301,L]
</IfModule>
ページ・ディレクトリのリダイレクト
ピンポイントで、ページ・ディレクトリのリダイレクトの記述です。
ページのリライトをして、どこかのページにくっつけた場合や、ディレクトリを丸ごと引越した場合に使う記述で、覚えておくと便利です。
ページ単位のリダイレクト
同じドメインにあるページのリダイレクトの記述です。
例えば、https://dubdesign.net/AAA.html
から https://dubdesign.net/BBB.html
のページへリダイレクトする場合、以下のようになります。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^AAA.html$ https://www.〇〇.com/BBB.html [L,R=301]
</IfModule>
異なるドメインページへのリダイレクト
異なるドメインへリダイレクトさせる記述です。
例えば、https://dubdesign.net/AAA.html
から https://sample.com/BBB.html
のページへリダイレクトする場合は、以下のようになります。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^AAA.html$ http://sample.com/BBB.html [L,R=301]
</IfModule>
ディレクトリ単位のリダイレクト
ディレクトリ単位にリダイレクトをかける時の記述で、例えば、https://dubdesign.net/AAA/
から https://dubdesign.net/BBB/
の時の記述です。
コードを表示する
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^AAA(.*)$ /BBB$1 [L,R=301]
</IfModule>
さいごに
リダイレクトは、なんやかんやで色々使う場合があるので、是非とも覚えておきましょう。
覚えとくだけで損はありません。
今回の記事をまとめると、
- .htaccessに書く時は必ずバックアップをとってから。
- 書くのをミスると500エラーが出る。
- その状況に適切な記述をしましょう。
です。サイト全体の適正化の為、是非参考にしてください。