URL正規化とは、正規のURLを定めてそのURLに統一することです。
例えば、http://www.example.com/ と http://example.com/ のどちらをリクエストしても同じページが表示される場合がありますが、 URL価値を分散させないという観点ではどちらかに統一したほうが良いのかもしれません。
また、wwwの有無の他にも、index.htmlの有無や、大文字か小文字かなどのURL表記を統一して、一つのURLに価値を集約するのがURL正規化の目的です。
仮にwww付きのURLに統一するとしましょう。 この場合、http://example.com/ へのリクエストを http://www.example.com/ に301リダイレクトすることでURLを統一することができます。
301という番号はHTTPステータスコードと呼ばれるもので、3xx番台はredirection(再指示、再命令)を表します。 その一つが301リダイレクトで、Moved Permanently(恒久的に移動済み)という意味になります。
HTTPステータスコードが301に指定してあれば、検索エンジンは「恒久的に移動したのだな」と解釈して、リダイレクト先の新URLに旧URLの価値を引き継いでくれるとされています。
※ちなみに、302や307を指定すると、一時的なリダイレクトだからURLの価値を引き継いでくれるかどうかは微妙…とも言われますが、個人的にはよく分かりません。 検索エンジンの開発者が決めることだから、おそらく状況とともに変わるのだろうと思っています。 もし301リダイレクトが不正に利用される事例が増えれば、検索エンジンが301リダイレクトをどう評価するかも変化するのかもしれません。
.htaccessファイルで301リダイレクトを指定するには、以下の記述を追加します。 「example.com」の部分はご自分の利用しているドメイン名に置き換えてください。
# 301リダイレクト http://example.com/ → http://www.example.com/ RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] # 301リダイレクト http://www.example.com/index.html → http://www.example.com/ RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L]
.htaccessファイルに上記の記述を追加してサーバーにアップしたら、301リダイレクトされているかどうかを確認してみましょう。 以下のサイトなどで確認すると便利でしょう。
リダイレクトチェック http://ohotuku.jp/redirect_checker/