【.htaccess】URLを正規化する方法(「www」と「index.html」の正規化)

公開日:
更新日:
カテゴリー: サーバー

WordPressでサイトを運用している場合、デフォルトでURLの正規化を行ってくれますが、HTMLサイト等を運営している場合、自分で「.htaccess」ファイルを作成し、正規化処理をしなくてはなりません。

ここではサーバーapacheのmod_rewriteを使ったURL正規化の方法を説明します。

URLの正規化とは?

URLの正規化とは、同じ内容のページが複数ある場合に、指定したページに統一することです。

正規化の方法には、正規化タグ「rel="canonical"」を使う方法とサーバーの.htaccess(mod_rewrite)を使う方法がありますが、ここではmod_rewriteの方法を説明します。

詳細

URL上は「http://○○○.com」と「http://www.○○○.com」は別ページとなります(wwwがあるかないか)。

しかし殆どの場合(URLの正規化を行っていない場合)、「http://○○○.com」でアクセスしても「http://www.○○○.com」でアクセスしても同じページが表示されます。

こういった場合、サイト内に同一ページが存在することになり、検索エンジン対策(SEO)上よろしくない状態になります。

なぜなら、検索エンジンは同一コンテンツを嫌いますし、それぞれのページにSEO的なパワーが分散してしまうからです。

具体例

そのため、SEO上の理由のため、URLの正規化をする必要があります(最近の検索エンジンはとても賢いので、その必要性も薄れているかもしれませんが・・・)。

なお、URL正規化の具体例を示しますと、当サイトのドメインは「ysklog.net」ですが、「http://ysklog.net」と「http://www.ysklog.net」でアクセスしても、同じページ(http://ysklog.net)に統一されます。

これは、「http://www.ysklog.net」でアクセスしてきたものを「http://ysklog.net」に正規化(リダイレクト)しているからです。

正規化の方法

ということで、実際にURLを正規化する方法を紹介したいと思います。

まず、「.htaccess」ファイルを準備します。そして以下を記述します。

#「www」のあるURLを「www」なしのURLに正規化
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.○○○.com
RewriteRule ^(.*)$ http://○○○/$1 [R=301,L]

これだけで、「www.○○○.com」を「○○○.com」に正規化(301リダイレクト)することができます。

(なお、「http://www.○○○.com/piyo/」の場合でも「http://○○○.com/piyo/」に正規化されます)

また、「http://○○○.com/」と「http://○○○.com/index.html」でアクセスしても同一のページが表示されますので、これも同様な理由で正規化してあげる必要があります。

#「index.html」ありのURLをなしに正規化
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://○○○.com/$1 [R=301,L]

これで「http://○○○.com/index.html」にアクセスがあった場合、「http://○○○.com/」に正規化されます。

(なお、「http://○○○.com/hoge/index.html」の場合でも「http://○○○.com/hoge/」に正規化されます)

まとめ

ということで、「www」と「index.html」のURL正規化を行うためには、「.htaccess」に以下を記述すればOKです。

#「www」のあるURLを「www」なしのURLに正規化
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.○○○.com
RewriteRule ^(.*)$ http://○○○/$1 [R=301,L]

#「index.html」ありのURLをなしに正規化
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://○○まる.com/$1 [R=301,L]

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント