wwwなしのURL、wwwありのURLに統一する apacheのrewriteにて

 URLにwww有りと無しでは、検索エンジンが別々異なるページと認識します。つまり、同じページを2つ持ってる事になります。同じページをインデックスすることは、検索エンジンにとっても良くありません。そこで、apacheの「mod_rewrite」でwww無しのURLをwww有りのURLに変更します。「mod_rewrite」をインストールしていない場合は、こちらのページを参考にしてください。
また、ページのファイル名が「/」「/index.html」「index.php」で同じ内容を表示する場合も、検索エンジンにマイナスになります。

1. RewriteRuleを使う

shinbo.orgで記載しています。変更する場合はご自分のホスト名に変更してください。
「www.shinbo.org」以外を「www.shinbo.org」に変更する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.shinbo\.org
RewriteRule ^(.*)$ http://www.shinbo.org/$1 [R=301,L]

サブドメイン無しを「www.shinbo.org」に変更する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^shinbo\.org
RewriteRule ^(.*)$ http://www.shinbo.org/$1 [R=301,L]

「test.shinbo.org」と「www.shinbo.org」以外を「www.shinbo.org」に変更する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^test\.shinbo\.org
RewriteCond %{HTTP_HOST} ^www\.shinbo\.org
RewriteRule ^(.*)$ http://www.shinbo.org/$1 [R=301,L]

apacheを再起動して、設定を反映させます。
[root@localhost ~]# /usr/local/apache2/bin/apachectl restart
[root@localhost ~]# service httpd reload

(注意)
apacheの設定によっては、上記の記述では不具合が出る場合があります。
wwwが無い状態でアクセスすると、ドメイン後の最初のスラッシュが2つ重複「//」する場合があります。
http://shinbo.org/test/

ttp://www.shinbo.org//test/

その場合は、 「^」の後に「/」を入れてください。
RewriteRule ^(.*)$ http://www.shinbo.org/$1 [R=301,L]

RewriteRule ^/(.*)$ http://www.shinbo.org/$1 [R=301,L]

2. RedirectMatchを使う

「shinbo.org」を「www.shinbo.org」に変更する場合
ServerName shinbo.org
RedirectMatch 301 ^/(.*)$ http://www.shinbo.org/$1

「www」無を有りに変更する場合は、「RedirectMatch」がお勧めです。
サーバーにかかる負荷が少ないです。

カテゴリー: apache, サーバー, ホームページ作成, ホームページ分析・SEO タグ: パーマリンク

コメントを残す