きまぐれ引きこもりんご80%

「301リダイレクト」を設定した時の備忘録

web制作

「301リダイレクト」を設定した時の備忘録

今更ではありますが、SEOを考慮して「301リダイレクト」を設定した時の備忘録です。
設定したのは半年ほど前になりますので忘れている部分もあり、自分自身の復習も兼ねて、まとめてみました。

<経緯>
「Google Search Console」のメッセージで、「〜の検索パフォーマンスを改善できます」と出る。

パフォーマンスを改善できると書いてあるので素直にGoogle先生に従うことにします。
改善項目は「サイトマップファイルを送信する」などを含め5点程あったのですが、その中に「ウェブサイトの全バージョンを追加する」「優先するバージョンを選択する」という項目がありました。
この「バージョン」とはURLに「www」を含むか、含まないか等のURLのバージョンの事を指しています。

要するに、これを設定しない状態では「http://goodsan.jp」「http://www.goodsan.jp」の
2つのバージョンが存在していますよと先生はおっしゃっているのですね。

このバージョンが併存するとSEO評価が分散したり、重複コンテンツとみなされペナルティを受ける事もあるみたいで、SEO的にはどうも具合がよろしくないらしいのです。

そこで、
Search Consoleで「優先するバージョンを選択する」を設定して簡単に改善することが出来るのですが、それでもURLのバージョンが2つ併存しているのは変わらないわけで、どうせなら、「.htaccess」の「301リダイレクト」で統一することにしました。

この「301リダイレクト」とは何かというと、
サイト移転でURL変更した時などに、古い方のURLにアクセスしても自動で(知らないうちに)新しいURLに転送してくれているアレです。
これを利用して「wwwあり」から「wwwなし」にリダイレクトさせます。
リダイレクトは、この「301」以外にもmetaタグやjs、phpで指定する方法があり、ケースバイケースで使用すればいいと思うのですが、今回のケースでは、Googlebotが301リダイレクトに対応し推奨しているという事で、SEOに有利な「301リダイレクト」を設定することにしたという訳です。
(※301リダイレクトは旧URLから新URLへ、評価やページランクを引き継ぐ事ができるというメリットもあります。)

301リダイレクトを設定する

それでは早速、「wwwなし」に統一することにします。(逆にwwwありに統一する場合は、該当箇所を入替えて下さい。)

と言っても方法は簡単で、
2、3行のコードを「.htaccess」ファイルに記述するだけ。
(ここでは「.htaccess」ファイルの説明は省きますので、各自お調べ下さい。)
尚、サーバー環境は「さくらインターネット」の場合です。
(環境によっては冒頭に「Options +FollowSymLinks」の記述が必要だったりしますので、ご注意下さい。)

具体的には、以下の3行を「.htaccess」ファイルに記述します。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.ドメイン名\.jp
RewriteRule (.*) http://ドメイン名.jp/$1 [R=301,L]

ざっくりと上記コードの内容を見てみましょう。

(手順1)
「RewriteEngine on」でMod_Rewrite機能を有効化、最初に一回書けばOK。(※mod_rewriteはApacheのモジュール)

(手順2)
「RewriteCond X Y」 X=Yの場合、手順3の「RewriteRule」を実行。
%{}は環境変数、^\は正規表現、HTTP_HOSTはリクエストしたドメイン、(:80)はポート番号、省略可。

(手順3)
「RewriteRule X Y」XをYへリライト。
^$(最初と最後).*(何でも)、$1(同行()内部を参照)
RewriteRuleオプション[R=301,L]
RはリダイレクトのR、301リダイレクトを指定。
(※Rのみの場合は、302リダイレクト)
LはラストのLで以降のRewriteRuleを処理しない。

(手順4)
最終行は改行で終わる。

さくらのレンタルサーバ初期ドメインの場合

更に、さくらのレンタルサーバは、初期ドメインも設定されていますので、
ついでに、この初期ドメイン(ドメイン名.sakura.ne.jp)も独自ドメイン(wwwなし)に統一します。

RewriteCond %{HTTP_HOST} ^(ドメイン名\.sakura\.ne\.jp)(:80)?
RewriteRule ^(.*) http://ドメイン名.jp/$1 [R=301,L]

更に更に、初期ドメインルート以下にあるディレクトリ「hogehoge」は、「ドメイン名.sakura.ne.jp/hogehoge/」になりますが、それも「ドメイン名.jp/hogehoge/」に統一します。

RewriteCond %{HTTP_HOST} ^ドメイン名\.sakura\.ne\.jp(:80)?$
RewriteRule ^hogehoge/(.*)$ http://ドメイン名.jp/hogehoge/$1 [R=301,L]

もしくは、hogehogeディレクトリの.htaccessに以下を記述します。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^ドメイン名\.sakura\.ne\.jp(:80)?$
RewriteRule ^(.*)$ http://ドメイン名.jp/hogehoge/$1 [R=301,L]

以上で、設定は完了です。