目次
URL正規化とは
ページのURLは異なっているのに、その内容が完全に同じであるコンテンツが存在していることがあります。
サイトを公開した際に、ドメインはデフォルトで以下のようなurlでもアクセスできてしまいます。
『http://sample.com』
『http://www.sample.com/index.html』
『http://www.sample.com』
『http://www.sample.com/index.html』
どれか一つ正規のURLを検索エンジンに対して明示することを「URL正規化」と言います。
URL正規化は基本的なSEO対策
何故、URLの正規化をしないといけないのでしょうか?
複数のURLで同じコンテンツが存在する場合、検索エンジンによってはそれぞれを別のサイトとみなすことがあります。
その場合ページの持つパワーが分散されてしまうからです。
別ページと認識されると、どんなに検索上位化施策として被リンク(外部リンク)施策を行ってもページが分散してしまうため、SEO効果が半減しまいます。
複数URLでページアクセスできる場合は、URL正規化し、SEO効果を高めたいと思います。
wwwあり・なしを統一(正規化)
wwwあり・なしのどちらかに統一することが可能です。
WordPressの場合
WordPressの場合、インストール時にどちらかのURLに正規化されています。
[ダッシュボード(管理画面)]→[設定]→[一般]の
サイトアドレス (URL)で設定したURLに正規化されます。
サイトアドレス (URL) で設定したURL「http://netbusinessbox.net/」(wwwなし)に正規化されるので、「http://www.netbusinessbox.net/」でアクセスした場合は「wwwなし」のページにリダイレクトされます。
・「wwwなし」のURLでinstall.phpを実行すると「wwwなし」に統一
・「wwwあり」のURLでinstall.phpを実行すると「wwwあり」に統一
htmlサイトの場合
htmlサイトの場合は.htaccessで301リダイレクトして統一します。
wwwあり・なしを選び、以下のタグをhtaccessに記述してアップしてください。
・「wwwなし」のURLに統一
RewriteEngine On # www無しのURLに統一 RewriteCond %{HTTP_HOST} ^www\.sample\.com RewriteRule ^(.*) http://sample.com/$1 [R=301,L]
・「wwwあり」のURLに統一
RewriteEngine On # www有りのURLに統一 RewriteCond %{HTTP_HOST} ^sample\.com RewriteRule ^(.*) http://www.sample.com/$1 [R=301,L]
index.htmlあり・なしを統一(正規化)
また、index.htmlのあり・なしでURLが分散する場合も、書き換えによりURLを統一(正規化)することもできます。
『http://www.sample.com』
『http://www.sample.com/index.html』
WordPressの場合
.htaccess を編集してindex.html をindex.php へリダイレクトします。
WordPressに対してパーマネントリンクを設定すると、自動的にWordPressのインストールディレクトリに対して「.htaccessファイル」が生成されます。
生成された場合の「.htaccessファイル」は、以下のようになっています。
# BEGIN WordPressRewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
これをベースに、index.html をindex.php へリダイレクトさせるソースコード(5行目)を追加します。
RewriteRule ^index\.html?$ / [R=301,L]
追記したソースコードは下記になります。
# BEGIN WordPressRewriteEngine On RewriteBase / RewriteRule ^index\.html?$ / [R=301,L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
htmlサイトの場合
サイト内のすべてのディレクトリにおいて『/index.html』(index.html有り)でのアクセスを『/』(index.htmlなし)に統一する方法
RewriteEngine On
# index.html無しのURLに統一
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://sample.com/$1 [R=301,L]