MENU

SEOパワーを引き継げるサイト移転で相手に差をつけよう!.htaccess・301リダイレクト編.html

【スポンサーリンク】

.htaccess・301リダイレクト編アイキャッチ

風邪のせいで次の日の夕方まで寝ていた苦労詐欺だ。
体がダルイだけなら平気なんだけど、頭痛はさすがにキツイ。

前回は.htaccessを使用することができないサイトやはてなブログからの引越方法について紹介したね。
今回は.htaccessを使用しての301リダイレクト方法を紹介していくよ。

.htaccessが使えるのなら特に難しくなくサイト移転ができるよ。
WordPressを使っている人はデフォで設置されているから、引っ越す時はこれをしっかり利用しよう。

リダイレクトの種類と301リダイレクトを行う必要性について

まず301リダイレクトについてだけど、「301」って数字がついてるのを着目してほしい。
「301」だけでなく「302」や「303」リダイレクトといったものも存在しているよ。

それぞれちゃんと意味があるからまとめて紹介していくよ。

リダイレクトの種類

301リダイレクト
完全にサイトが移動したよってことを検索エンジンに伝えてくれるリダイレクト。
移動したサイト情報が正しく伝わるため、移動前のサイトや記事のSEO効果を8割ぐらいは引き継いでくれる。
サイトや記事の引越しの場合は極力これを使おう
302リダイレクト
301と同様移転したよってことを検索エンジンに伝えてくれますが、こちらは一時的に移転したよってことを伝えてくれる。
なので、SEO効果等は移転前のページが持ったまま、ページの表示だけ302リダイレクト先のページで行っている感じ。
サーバーエラーやメンテナンスで一時移転を余儀なくされた時等に使える。
303・307リダイレクト
調べたら、「GETメソッドでアクセスし~…」「POSTが~…」って、僕もわからないような専門用語出てきた。
多分、そうそう使う機会が無いと思うからこうゆう名称のリダイレクトがあるってことだけ知っておこう。
304・305・306
これらはリダイレクトではまったく使われないけど、存在しているものになる。
意味は304が「未更新」、305は「プロキシを使用せよ」、306は未使用のステータスコード

301~307の計7個存在している中で、実際に使う機会が多いのが「301」と「302」の2つぐらいかな。
紹介した上記以外にもリダイレクト方法は存在していたりするけど、SEOパワーを引き継いだリダイレクトをしてくれるのは「301」だけだよ。

リダイレクトの種類を紹介したところで、次は使い方を教えるよ。
301リダイレクトは.htaccessでしかできないリダイレクト方法になるよ。

前にも説明したけど、.htaccessはサーバーに直接指示を与えることが出来るファイルだよ。
ユーザー側で修正・加筆できるもので、今回の301リダイレクトやURLの正規化を行うことができるよ。

今回は301リダイレクトの方法も、URLの正規化についても教えるよ。

「.htaccess」?なんか拡張子みたいになってね?

そうなのよ、サーバーに直接指示を与えることができるファイルだから、形式が他と違うのよ。

だから、今回は制作方法と共に設置方法も教えるわよ。

設置の方法も他と違ってくるわけね。

リダイレクトは301~307までの7種類存在している。
実際に利用されることが多いのが「301」と「302」の2つ。
SEOパワーを引き継いでリダイレクトさせれるのは301リダイレクトのみ。

.htaccessを使った301リダイレクト

.htaccessはサーバーに指示を与えることができるファイルだと説明したけど、指示そのものは大して難しくはないよ。
WordPressを使っている人なら、デフォでサーバー内にこのファイルが設置されてるから探してみて。

サーバー内に既に.htaccessが設置されている人はまずそれをローカルの任意の場所にダウンロードしてこよう。
一から作る場合は「htaccess」って名前のテキストファイルを作成しよう。

サーバーからダウンロードしてきた場合ファイル名を「.htaccess」から「htaccess.txt」に変更し、テキストファイルになるようにしてね。
「htaccess」って名前のテキストファイルが作成できたなら、まずはそのファイルを開こう。

htaccessを一から作っている場合は、開いても何も書いてないはずだから、ド頭にカーソルを持ってきてね。
WordPressのように予めサーバーに「.htaccess」が置かれていた人は何かしらの記述があるはずだから、書いてある記述の一番下から更に一行開けたあたりにカーソルを合わせよう。

これってテキストファイルにする必要って何かあるの?

「.htaccess」のままだとファイルの中身自体イジれないはずよ。

例えイジれたとしてもファイルそのものが壊れる可能性があるから、テキストファイルに変更しておいたほうがいいわよ。

なるほど、たしかに、サーバー用のファイルを直接弄って壊れたら困るわな。

使っているサービスによっては予め「.htaccess」が設置されている可能性があるから、サーバーの中身を確認しよう。
一から作る場合も、予め設置されていた「.htaccess」を弄る場合でも「htaccess」って名前のテキストファイルになるようにしよう。
特殊なファイルだから、下手に弄って破損なんてことがないようにバックアップまでとっておこう。

ページ単位でのリダイレクト方法

まずは、ページ単位でのリダイレクト方法から。
これはサイト移転というよりは、元のサイトからいくつかのページだけ移転させて新しいサイトを作った時なんかに使えるね。

htaccessのファイル内に↓を記載して、該当箇所を変更すればOK

RewriteEngine on
RewriteRule ^page.html$ http://www.sample.com/new_page.html [R=301,L]

上記の記述は「page.html」にユーザーが訪れたら、「http://www.sample.com/new_page.html」にリダイレクトする処理を行わせているよ。
「page.html」を該当ファイル名に、「http://www.sample.com/new_page.html」をリダイレクト先のアドレスにそれぞれ書き換えればOKだよ。

雑記ブログの中から特定カテゴリーのページだけ移動させて特化ブログ作った時なんかに使えるね。

なるほどな。指定した該当ページにアクセスして来たユーザーのみリダイレクトさせるわけだな。

301リダイレクトさせていれば、コピー扱いにならずインデックスしてもらえるわね。

はてなブログ編のやつと比べても、書き方がかなり楽だな。

該当ページにアクセスして来たユーザーのみをリダイレクトさせることができるよ。
ページごとで指定できるから、全体的なサイト移転でないのならこの方法で十分だよ。
もちろん301リダイレクトだから、コピー扱いにはならずきちんとインデックスしてもらえるよ。

ドメイン単位でのリダイレクト方法

今度はドメイン単位でのリダイレクト方法を教えるよ。
ドメインってのはサイトの大元となる住所に当たる部分のことだよ。

例えば、このサイトで言うとアドレス内の「www.seoteach.xyz」の部分がドメインにあたる部分だよ。
ドメイン名だけをアドレスバーに入力してアクセスすると殆どのサイトでトップページが表示されるはずだよ。

そこから「/フォルダ名/ファイル名」って感じで個別のページが作られているんだよ。
ちなみにはてなブログでブログを作って記事ページを作ると必ず「/entry/ファイル名」になるようになっていて、強制的に「entry」ってフォルダが作られているよ。

流石にちょっと分かりづらいかな(;・∀・)
取り敢えず処理内容を解説しながら説明していくよ。

先程のページ単位ではなく、サイト自体を新しく移転させる人は、移転前のサイトに↓を記述した.htaccessファイルを設置しよう。

RewriteCond %{HTTP_HOST} ^(www.old-url.com)(:80)? [NC]
RewriteRule ^(.*) http://www.new-url.com/$1 [R=301,L]

上の記述の場合「www.old-url.com」というドメインにアクセスしてきた場合、「http://www.new-url.com/」のサイトにリダイレクトさせる処理をしているよ。
ドメイン単位でのリダイレクトだから、トップページだけでなく他のページにアクセスしてきた場合も指定されたリダイレクト先にユーザーを飛ばすことになるよ。

例えばAさんが「www.old-url.com/entry/seosyoshinsya.html」とアドレスバーに入力してアクセスしたとする。
上記の記述がされた.htaccessがサーバーに設置されていると強制的にhttp://www.new-url.com/entry/seosyoshinsya.html」のアドレスにリダイレクトされることになるよ。

気をつけないといけないのは、トップ以外のページのアドレスはドメイン部分以外は移転前と同じものにしておかないといけないよ。
先程のAさんの例で言うと、「entry」ってフォルダ内に「seosyoshinsya.html」ってファイルがあること前提になっている。

もしこれが、移転先で「entry」ってフォルダが無くなってしまって、ページのアドレスが「http://www.new-url.com/seosyoshinsya.html」ってアドレスになってしまった場合、旧アドレスにアクセスしてきた人にはエラー画面が表示されちゃうよ。
もちろん上記の記述を使う時は「www.old-url.com」や「www.new-url.com」の部分は任意のものに書き換えて使ってね。

「entry」フォルダが邪魔で消しちゃってアドレス変えちゃった場合は、全てトップに飛ばすとかでもいいの?

ん~、SEO的には一致するページに飛ばせるようにするのがベストね~

ドメイン以降のアドレスが違うものになっているのなら、ページ単位のリダイレクトを使って極力一致するページへリダイレクトさせたほうがいいわね。

そうか。まぁ、わざわざフォルダ消したりするほうが面倒くさいか。

ドメインはサイトの大元となる住所に当たる部分だよ。
今回の記述はアドレス内のドメイン部分だけを指定したものに書き換える処理をさせているよ。
ドメイン以降のアドレス部分は基本的に一致していることが条件だよ。

.htaccessはアドレスの正規化もできる

今回紹介した.htaccessだけど、301リダイレクトの処理以外にもアドレスの正規化を行うことができるよ。
特に難しくなくコピペでできるか、アドレスの正規化ができてない人はこれを参考にやってみよう。

まずアドレスの正規化って何?って話なんだけど、実は初めてサイトを開設すると、そのサイトへの入口が3つ作られてしまうんだ。
そのうち2つは前回のはてなブログ編で紹介したアドレスに「www」が付いているか付いていないかの2つなんだけど、3つ目は元のアドレスの後ろに「/index.html」が付いているものになるよ。

ちょっとわかりにくいから僕のサイトのドメインを使って例を挙げてみるね。
大体以下の3つの入り口が作られちゃうってことね。

ちなみにどのアドレスで飛んでもサイトのトップページが表示されるはずだよ。
トップページが表示されるからユーザー側は困らないけど、検索エンジン側は「入り口が3つ存在している」って認識になっちゃうよ。

こうなるとはてなブログ編でも説明したけど、1つでもらえる評価が3つに分散しちゃって、通常よりも評価が低くなってしまうよ。
これを防ぐためにもアドレスの正規化を行っておこう!

ちなみにドメインの説明で「www.seoteach.xyz」がドメインって言っちゃったけど、正式にドメインの部分は「seoteach.xyz」になるよ。
独自ドメインを取得する時は「www」をつける付けないは選択できるよ。

今回は『www』有りの場合と『www』無しの場合の二通りを掲載しておくよ。

『www』有りの場合

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
order deny,allow

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]
order deny,allow

『www』無しの場合

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
order deny,allow

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]
order deny,allow

書き換える箇所は特にないから、自分のドメインに合わせたほうを.htaccessにコピペしておけばOKだよ。
ちなみにWordPressの人や初めから.htaccessが設置されていた人は、既にアドレスの正規化がされていると思うよ。

アドレスの正規化ってちゃんと行われているかどうか確認できる方法ないの?

自身のサイトアドレスの後ろに「index.html」を付けてアクセスしてみて。

トップページが表示された状態でアドレスを確かめた時、アドレスの後ろに「index.html」が付いてなかったら成功よ。

同じように『www』の有り無しも実際に付けたり削除したりしてやってみればわかるってことか。

初めてサイトを開設し、.htaccessが設置されていなかった場合、アドレスの正規化が行われていない可能性が高いよ。
アドレスの正規化が行われていない場合、入り口が3つもできてしまうよ。
今回の記述を自身のサイトアドレスに合わせた方を.htaccessにコピペするだけで正規化できるよ。

.htaccessの設置方法

.htaccessの設置方法は少し特殊だよ。
初めから「.htaccess」ってファイル形式で作って、中身を書き換えてアップしてもいいけど、ファイルが破損する可能性があるからオススメしないよ。

僕としては以下のやり方が一番オススメだよ。

あとは実際にサイトにアクセスしてみて記述した処理が実際に行われているか確認してみよう。
F5キー等を押して更新を行ってみても処理が行われない場合、ブラウザのキャッシュが残っている可能性があるから、キャッシュの削除も行おう。

そういえば、サーバーにアップロードするファイルって基本的に英語名になってるよな?

そうね、基本は英語名のファイルがアップロードされているわね。

これって、日本語にしちゃだめなの?

やってみてもいいけど、ファイルの形式によってはサーバー内から消せなくなって、ファイル名すら変更できなくなるわよ?

や、やめとくわ(;・∀・)

初めから「.htaccess」のファイル形式で作ってもいいけど、破損する可能性があるからオススメしないよ。
「htaccess.txt」といったテキストファイルを作ってアップロード後に「.htaccess」に変更するほうが確実なのでこっちのほうがオススメだよ。
サーバー内のファイル名を日本語に変更するとファイル形式によっては消せない&名前変更できなくなるので要注意。

まとめ

それじゃあこれまで話してきたことをまとめるよ。

  • サイト移転やページ移転する場合は極力SEOパワーが引き継げる301リダイレクトをしよう
  • リダイレクトには301~307まで様々な種類が存在している
  • 301リダイレクトを設定しておけばSEOパワーを引き継いで移転させることができるよ
  • 301リダイレクトは.htaccessファイルでしかできない
  • .htaccessでのリダイレクトはページ単位とドメイン単位の2つがある
  • .htaccessならURLの正規化もできる
  • .htaccessファイルは設置方法が特殊なので注意
  • サーバー内に下手に日本語ファイルを作ると削除できない&名前変更できないで阿鼻叫喚になるよ

大体こんな感じかな。
.htaccessは今回紹介した内容以外にも様々な処理をさせることができるから、気になる人はググってみよう。