- Home
»
- XHTML+CSS Webサイト制作Tips
»
- .htaccess Tips
»
- Webサイトを移転したとき
- .htaccess Tips
»
- XHTML+CSS Webサイト制作Tips
»
.htaccess Tips
URLを変更した場合、「移転しました」だけでは検索エンジンには同じWebサイトであることは伝わりません。
.htaccessを使用すれば、これまでのWebサイトで得ていた評価を新しいサイトに引き継ぐことができます。
HTTPステータスコード
Webサイトなど、Webサーバがブラウザに返す、現在の状態を3桁の数字で表したコードをHTTPステータスコードと言います。
Webサイトが通常通り表示できる状態は「200」、ページが見つからない場合は「404」、CGIなどのエラーがWebサーバで発生した場合は「500」が返されます。
このステータスコードは、私たちが普段利用しているブラウザも受信していますが、検索エンジンのクローラもステータスコードを取得し、そのWebサイトの状態を判断しています。
移転した場合のステータスコード
ステータスコードの中で、300番台に属しているコードが、リダイレクション(通常の入力先や出力先を変更すること)に関するものです。
その中で、Webサイトの移転を示すものは301と302があります。
301(Moved Permanently)
ステータスコード"301"は恒久的移動を示します。
つまりWebサイトが永久的に別のURLに移転したということを示します。通常WebサイトのURLを変更した場合は301を使用します。
302(Moved Temporarily)
ステータスコード"302"は一時的移動を示します。
これはWebサイトが一時的に別のURLに移転していることを示します。あまり使用することはありませんが、リニューアル中の場合に別のドメインを利用する場合などは302を使用します。
自動的に別のURLへ飛ばす方法
自動的に別のURLに飛ばすためには、.htaccessのmod_rewriteという機能を利用します。
mod_rewriteはアクセスされたURLを正規表現で書き換えることができるモジュールです。
mod_rewriteの記述方法
.htaccessというファイルを作成し、このように記述します。
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/(.*)$ http://www.newurl.com/$1 [R=301,L] </IfModule>
1行目・4行目 <IfModule mod_rewrite.c>~</IfModule>
mod_rewriteはApacheのモジュールです。そのため、全ての記述は<IfModule mod_rewrite.c>と</IfModule>の間に書かなくてはいけません。
2行目 RewriteEngine on
まず初めに、mod_rewriteによるURLの書き換えを有効にするために、RewriteEngine onを記述します。
3行目 RewriteRule ^/(.*)$ http://www.newurl.com/$1 [R=301,L]
書き換えのルールです。
RewriteRule 書き換え元のURLのドメイン以降 書き換え先のURL [オプション]
と記述します。書き換え元のURLには正規表現を利用します。正規表現とは、文字列のパターンを記号化して表現するものです。例えば、[0-9]と書けば0~9中の1文字、.(ドット)は任意の1文字を表します。
ここで指定している^/(.*)$について1つずつ説明します。
^は文字列の先頭を指します。
$は文字列の最後を指します。
例えば「^abc$」は「abc」でないとマッチしませんが、「^abc」であれば「abcde」もマッチすることになります。
/は通常の「/」という文字列です。
.は任意の1文字、*は直前の文字の0回以上繰り返しを指します。
.*となっていますので、どんな文字が何回繰り返しても当てはまります。
「/.*」は、「/abc」も「/」も「/123」も当てはまることになります。
()はその中に当てはまる文字列を一つにまとめます。この()で括られた中に当てはまった文字列は、書き換え後のURLで「$1」として使用できます。()が複数ある場合は、1つ目の()に当てはまった文字を$1、2つ目の()に当てはまった文字を$2として使用します。
つまり、
元のURL・・・http://www.oldurl.com/
アクセスされたURL・・・http://www.oldurl.com/information.html
という場合、
「^/(.*)$」は「/information.html」を指します。
更に、「(.*)」は「information.html」を指し、この部分が書き換え後のURLの指定で$1として使用できますので、
書き換えるURL・・・http://www.newurl.com/$1
は、
http://www.newurl.com/information.html
となり、
http://www.oldurl.com/information.html
へのアクセスは自動で
http://www.newurl.com/information.html
に移動します。
ここで大切なのは最後のオプションです。
オプションとして指定できるものはいくつかありますが、ここで指定しているRとLについて説明します。
Rはリダイレクトを意味するもので、=でステータスコードを指定できます。
R=301と指定すれば、"URLが変わる"と"ステータスコード301を返す"という2つの意味を持つことになります。
LはLast、つまり最後という意味です。
RewriteRuleは複数記述することができますが、そのルールにマッチした場合はそれ以降のルールを適用させません。
なぜ301を返す必要があるのか
初めにも書いていますが、トップページに「移転しました」と記述し、新しいURLへのリンクをはっただけでは検索エンジンには同じWebサイトであることは伝わりません。
伝わらないということは、別のWebサイトとして評価しますので、今までのWebサイトで得た評価は全て引き継がれないということになります。
しかし、301を返した場合、移転したということが伝わり、同じWebサイトであるを認識しますので、今までのWebサイトで得た評価を引き継ぐことができます。