301 リダイレクト(htaccess)が使えない時に検索順位を落とさずにブログを引っ越す方法


[初回公開] 2022年03月28日

ウェブサイトやブログを引っ越す場合に古いサイトが持っていた検索サイトの順位(SEO)を落とさない方法に htaccess を利用した 301 リダイレクトが推奨されているが、無料ブログなど htaccess が利用できない場合に検索順位を落とさずにブログを引っ越す方法を紹介する。

301 リダイレクト(htaccess)が使えない時に検索順位を落とさずにブログを引っ越す方法

1.なぜウェブサイトやブログを引っ越すと検索順位が落ちるのか

ウェブサイトやブログを引っ越すと検索順位が落ちる理由は、引っ越し前の URL と引っ越し後の URL が違う場合に Google など検索エンジンは全く別のサイトを見なすため、引っ越してもそれまでの検索順位や施した SEO はリセットされてしまう。

[引っ越す前] http://blog.sanmple-blog.blog

[引っ越し後] http://sanmple-blog-2.blog ← 検索エンジンは違うサイトと見なす



また、ドメインは同じでもサブドメインを変えたり、http と https 通信の違いでも検索エンジンは違うサイトと見なす。
そこで、ドメインが違っていても検索順位と SEO を引き継ぐために htaccess を利用した 301 リダイレクトが有効である。

http://blog.sanmple-blog.blog
https://blog.sanmple-blog.blog ← http と https の違いだが、異なるサイト扱いになる

https://www.sanmple-blog.blog
https://blog.sanmple-blog.blog ← サブドメインの違いだが、異なるサイト扱いになる

2.301 リダイレクトが推奨されている理由

301 リダイレクトとは、ブラウザからのアクセスに対してコンテンツデータを返すウェブサーバの機能の 1 つで、転送処理したときにログに残る状態を示すコードが 301 のため、「301 リダイレクト」と呼ばれている。



301 リダイレクトは前述の通り、ウェブサーバで行う。
ウェブサーバを操作または設定変更できるのはウェブサイトやブログの運営者しかできないことから信頼性があるため、Google など検索エンジンも引っ越し前と引っ越し後のサイトは同じ運営者と見なして検索順位や SEO に大きな影響を与えないようにしている。

また、301 リダイレクトの他には meta タグを利用した http-equiv=”refresh” と JavaScript を利用する転送方法がある。
同じ転送ではあるが、これらは HTTP のステータスコードが 301 ならない点と、どちらも HTML タグ内で行うので改ざんによる悪用を考慮して 301 リダイレクトに比べると検索順位は落ちやすい。

3.301 リダイレクトを行う方法

301 リダイレクトを利用するためには .htaccess ファイルをウェブサイトやブログのデータがあるディレクトリと同じ階層に置くだけでよい。

その際、htaccess には次のようにコードを記載する。
内容は、どのページにアクセスしても https://blog.sanmple-blog.blog/ にリダイレクトさせるというものである。

RewriteEngine On
RewriteRule ^(.*)$ https://blog.sanmple-blog.blog/

また、htaccess が利用できるのはウェブサーバは Apache が利用されている場合で、かつ htaccess の利用が許可されている場合に限る。



そのため、.htaccess ファイルを置いても利用許可されていなければリダイレクトすることができない。
加えて、画像以外のファイルをアップロードすることができない無料ブログでは htaccess を利用したリダイレクトはできない。

4.301 リダイレクト(htaccess)が使えない時に検索順位を落とさずにブログを引っ越す方法

無料ブログなど 301 リダイレクト(htaccess)が使えない時に検索順位を落とさずにブログを引っ越す方法としては、HTML 内に JavaScript でリダイレクトのプログラムを利用する。

301 リダイレクトに比べると検索順位の低下は避けられないが、一週間ほどで Google にインデックスされて検索結果に表示されるようになったので検索結果の圏外になるほどでもない。

4-1.JavaScript で http-equiv=”refresh” を疑似再現する

JavaScript を BODY 内に記載してページのリダイレクトをする場合に、meta タグでリダイレクトする http-equiv=”refresh” を疑似再現することができる。

<script type=”text/javascript”>
var meta = document.createElement(“meta”);
meta.setAttribute(“http-equiv”, “refresh”);
meta.setAttribute(“content”, “10;URL=https://blog.sanmple-blog.blog/”);
document.getElementsByTagName(“head”)[0].appendChild(meta);
</script>

meta タグの http-equiv=”refresh” によりリダイレクトは本来は HEAD タグ内に記載するが、HEAD タグの修正もできない無料ブログの場合は上記のようにすると指定したページに 10 秒後に自動的にリダイレクトする。

もちろん、HEAD タグを編集できる環境であれば JAvaScript ではなく直接 meta タグとして記載する方がよい。



HEAD タグ内に記載されている内容はブラウザ表示する前に処理することができるが、BODY タグ内の本文に記載した JavaScript は一度ブラウザに表示されてから実行されるので、リダイレクトを 0 秒にしてもプログラムを書いたページが瞬間的に表示されてしまうデメリットがある。

4-2.JavaScript の window.location.href を利用する

JavaScript を BODY 内に記載してページのリダイレクトをする場合に、window.location.href でリダイレクトすることができる。
window.location.href は JavaScript に用意されている自動遷移用の関数であるため、ウェブサイトの移転ではよく利用されているプログラムである。

<script type=”text/javascript”>
window.location.href = “https://blog.sanmple-blog.blog/”;
</script>

ただし、上記のままだとページが表示されてから自動遷移するまでの時間指定ができないため、別途 JavaScript で表示されてからの時間カウントするプログラムを用意して、任意の時間に達したら window.location.href が実行されるようにプログラムする必要がある。

4-3.301 リダイレクトの代わりに有効な書き方

htaccess による 301 リダイレクトと HEAD タグ内を編集できない無料ブログなどで検索順位を落とさずにリダイレクトさせる場合に実際に利用したコードが下記となる。

<script type=”text/javascript”>
var link = document.createElement(“link”);
link.setAttribute(“rel”, “canonical”);
link.setAttribute(“href”, “https://blog.sanmple-blog.blog/”);
var meta = document.createElement(“meta”);
meta.setAttribute(“http-equiv”, “refresh”);
meta.setAttribute(“content”, “10;URL=https://blog.sanmple-blog.blog/”);
document.getElementsByTagName(“head”)[0].appendChild(meta);
</script>

<div style=”border:2px solid #666; background-color:#ececec; padding: 10px 10px 10px 10px; line-height:1.5;text-align:center”>
<p>システムの切り替えにより、本コンテンツは下記に移動しています。</p>
<p>約 10 秒後に自動的にジャンプしますが、移動しない場合は下記リンクをクリックしてください。</p>
<p style=”text-align:center; font-weight:bold;”>【 <a href=”https://blog.sanmple-blog.blog/” target=”_blank”>{新しいウェブサイトのタイトル}</a> 】</p>
</div>

「var meta = document.createElement(“meta”);」の行からは meta タグの http-equiv=”refresh” を疑似的に行っている。
また、その前の「var link = document.createElement(“link”);」は Google など検索エンジンは内容が同じページが複数インターネット上に公開されているとコピーサイトと見なして検索順位を落とすため、正しい URL を示すために rel = “canonical” をこちらも疑似的に行っている。

最後にブログが移転した旨と、JavaScript をオフにしているブラウザなどのために A タグで新しいページの URL を掲載して手動で遷移できるようにしている。
検索エンジンもこの内容を見るため、新しい URL にクローラーが巡回して検索結果にインデックスされるまでの期間が短縮される効果も見込める。

5.リダイレクトと同時に行っておくとよい作業

前述の通り JavaScript によるリダイレクトの設定を行っておくと閲覧者は操作しなくても自動的に新しいサイトにジャンプするが、Google など検索サイトのクローラーを新しいページに誘導するために A タグでリンクを張っておくと、検索結果に新しいサイトの情報が表示されるまでの期間が短くなる。

6.301 リダイレクトが使えない環境下で検索結果に表示されるまでの日数

実際に 301 リダイレクトと HEAD への meta タグの編集ができない無料ブログから新しいサイトへの誘導を前述の JavaScript を用いた場合に、新しいサイトが検索結果に表示されるまでの日数は約 7 日(1 週間)であった。



まずリダイレクトの設定を入れる前のあるページの検索結果の順位を確認すると、3 位に表示されている(2022年03月09日時点、パソコンで閲覧)のが確認できた。
そのため、求める理想的な形はリダイレクト処理を入れることで検索結果に表示されている内容が新しいサイトの URL になる、もしくは新しいサイトの内容とリンクも同順位に表示されることである。

リダイレクトを行う前の検索結果の順位を確認

次に前述の 新しいサイトにも古いページと同じ内容のコンテンツを用意する。
新しいサイトにページが表示されるのが確認できれば、古いページの方に JavaScript によるリダイレクトのプログラムを記入する。

JavaScript を古いページに入れてから毎日同じキーワードで検索結果を確認したが、新しいサイトの URL に切り替わることも古いサイトの内容が変わることもなかった。

日が経ち、約 1 週間後の2022年03月17日に検索結果を確認すると次のように古いサイトの情報のすぐ下に新しいサイトの情報が表示されているのが確認できた。

引っ越し後のサイトが検索結果に表示された様子


さらに時間は経過し、リダイレクトを古いサイトに入れてから約 2 週間後の2022年03月22日に古いサイトの情報が消えて、新しいサイトの情報だけが検索結果に表示されたのが確認できた。

古いサイトの情報が消えて引っ越し後のサイトだけが検索結果に表示された様子

以上より、301 リダイレクトと HEAD タグ内が編集できない無料ブログでも検索順位を落とすことなく JavaScript でリダイレクトさせることが確認できた。

[2022年03月26日 追記]
さらに同じキーワードで検索したところ、古いサイトの情報が再度表示されていることを確認。
これは Google にアクセスした際にインデックスがまだ置き換わっていないサーバにアクセスしたか、インデックスの再調整が入ったと想定される。

しかし、新しいサイトの情報が上位に表示するのも維持されているので、引き続き経過観察するものとする。

関連記事

コメント

  1. 通りすがり より:

    ウェブリブログ の転送は301だと、本日発表あり

  2. 引き続き Seesaa で利用する人は検索順位が変わらないので朗報ですね。
    Seesaa 以外に引っ越す人は全て新しいサイトのトップページにしかジャンプしないので、SEO の観点では反対に検索順位が下がりそうです。

コメントを残す