サイトを運営していく上で、ページのURLを変更したり、ディレクトリ名(フォルダ名)を変更する…という場面が出てくるかもしれません。そんな時、サイトを閲覧している人の中で特定のページをブックマークしていて、そのページのURLを変更する…なんてこともあり得ます。
例えば、Aさんがhttp://aaa.com/old.html/というページをブックマークしている状態で、サイト管理人がそのページのURLをhttp://aaa.com/new.html/に変更した場合。AさんがURLが変更されたことを知らずにhttp://aaa.com/old.html/にアクセスしても、URLが存在していません…と表示されてしまいます。これでは閲覧する人に優しくないですよね。
そんな時に使うのが301リダイレクトといって、URL変更前のページにアクセスした時に自動的に変更したURLに飛ばしてくれる、という機能があります(^-^)
そこで今回は301リダイレクトの方法について書きたいと思います!
目次
基本的には.htaccessに記述して設定する
基本的に301リダイレクトの方法は.htaccessに記述してサーバーにアップすることで設定することができます。リダイレクトの種類としては大まかに
1. ページ単位でリダイレクトさせる方法
2. ディレクトリごとリダイレクトさせる方法
があります。それでは、それぞれの方法について書いていきます。
1. ページ単位でリダイレクトさせる方法
まず、ページ単位でリダイレクトさせる方法についてお話したいと思います。
例としてhttp://aaa.com/old.html/にアクセスした人をhttp://aaa.com/new.html/にリダイレクトにさせるとしたら、.htaccessに以下のように記述します。
RewriteEngine on RewriteRule ^old.html$ http://aaa.com/new.html [R=301,L]
このように、
ReweiteRule ^古いURL$ 新しいURL [R=301,L]
と記述することで、URL変更したページにリダイレクトさせることが可能となります!
ちなみに複数ページ設定することも可能なので、複数のページURLを変更した際にも活用できます(^^)
2. ディレクトリごとリダイレクトさせる方法
続いて、ディレクトリごとリダイレクトさせる方法について書いていきます。
http://aaa.com/old/というURLにアクセスがあった時に、http://aaa.com/new/にリダイレクトさせる…というのを例として挙げたいと思います。その場合、.htaccessに以下のように記述します。
RewriteEngine on RewriteRule ^old(.*)$ /new$1 [R=301,L]
このように、
ReweiteRule ^古いディレクトリ(.*)$ /新しいディレクトリ$1 [R=301,L]
と記述することでディレクトリごとのリダイレクトが可能になります!
※ WordPressでサイトを作成している場合の注意点
ちなみに、WordPressでサイトを制作している場合は、リダイレクトの記述箇所に注意しなければいけません。
ここで記述箇所を間違えてしまうと、リダイレクトがうまくいかない…という事件が起きてしまう場合があります!
具体的には、リダイレクトの記述を.htaccessの
# BEGIN WordPress
と表記されている部分より前に書く必要があります。もし、このルールを無視して
# END WordPress
よりあとにリダイレクトを記述してしまうとうまくリダイレクトされない…なんてことがありますので、そこだけは気を付けましょう!
まとめ
以上が大まかな301リダイレクトの方法になります。自分の例を挙げると、Movable TypeのサイトをWordPressに移行した時、Movable TypeではページURLに「_(アンダーバー)」が使えるのですがWordPressでは「_」が使えず「-(ハイフン)」になってしまうので、そういった時に「_」が入ったURLにアクセスがあった時に「-」に変更したURLにリダイレクトさせる…という案件がありました。
それ以外にも301リダイレクトが必要な場面が出てくると思うので、.htaccessで301リダイレクトを設定しましょう!