サイトを移転するときには、Google先生の教え通りに301リダイレクトをしないと、きちんと移転したということを認識してもらえません。Google Search Console(旧:Webmaster tools)で引越しするときには、その点もちゃんとチェックされるので、超重要です。
また、よくあるのがWordPressなどのCMSを使っていて、パーマリンク設定をする際に
http://ドメイン/%category%/%postname%/
という言う風にカテゴリ名をURLに入れちゃっている場合があります。しかし、これをしてしまうとカテゴリの入れ替えやカテゴリ名の変更をした時に、URLが変わってしまうためにリンク切れを起こします。
私は以前まさしくこれをやっていたので「カテゴリ名に左右されないパーマリンクに変えたい!!」と思ったものの、この問題にぶつかってパーマリンクの変更を断念しました。
しかし、URLのリダイレクトをうまく活用すれば大丈夫なことが分かったので、今回はその方法をご紹介したいと思います。
一般的な301リダイレクトの方法
301リダイレクトの簡単な方法は、Webサーバである『Apache』の「.htaccess」にリダイレクトルールを記述するやり方です。(多くのレンタルサーバはApacheなので)
これはWordPressのパーマリンク設定でもそうなのですが、『Apache』の「mod_rewrite」というモジュールを使って、URLを書き換えています。
参考までに、サイト丸ごとドメインを移転させる場合の「.htaccess」の記述コードをご紹介したいと思います。
RewriteEngine On RewriteCond %{http_host} ^www.hogehoge.com RewriteRule ^(.*) https://jikitourai.net/$1 [R=301,L]
上記は、「”www.hogehoge.com”にアクセスがあった全てを”jikitourai.net”にリダイレクトさせるよ」という内容になります。
そのため、ドメインの後ろの部分のURLは全て引き継がれていくのですが、もっと細かなリダイレクトルールを設定したいとなると、「.htaccess」でも出来るものの複雑になってしまいます。
そこでWordPressプラグインを使うことをオススメするわけです。
ちなみに、リダイレクトの種類と違い
リダイレクトには301、302、303、307の4種類があります。よく使われているリダイレクトは、301か302なのですが何が違うのでしょうか。
簡単に言うと、301リダイレクトは「恒久的にURLが変わるのでそこにリダイレクトしますよ」ということ。302リダイレクトは、「一時的なURL変更なので、元のURLは残しつつリダイレクトしますよ」ということ。
そのため、301リダイレクトでないと、元のサイトから移転したということをGoogle先生に示せないのです。
詳しいことは、『海外SEO情報ブログ』さんに載っていますので、ご参考までに。

WordPressプラグイン『Redirection』
リダイレクトさせるためのWordPressプラグインとしては、『Redirection』というプラグインをオススメします。
『Redirection』の特徴としては、301リダイレクトの管理ができるというのはもちろんですが
- 301リダイレクトのルールに正規表現が使える
- リダイレクトされたアクセス回数をロギングしてくれる
- Pass-throughリダイレクトが使える
- 404エラーになったURLがログに残る
などの良い点があります。
ここでポイントなのが、正規表現が使えるということです。正規表現とは、簡単に言うと「文字列をパターンで認識させる記法」と捉えてもらえばよいと思います。
この正規表現が使えると、特定の文字列の完全一致させるためのルールを1つ1つ書かずに、パターンを指定してあげれば一括でリダイレクトを掛けることができるようになるわけです。
Pass-throughって何?
ちなみに”Pass-through”ですが、あまり馴染みのないリダイレクトのさせ方です。パススルー、日本語で言うと「通過」ですね。
普通、301リダイレクトをすると、ブラウザのアドレスバーに表示されるURLは旧URL→新URLに変わります。しかし、パススルー(Pass-through)で設定すると、アドレスバーは旧URLのままなのに、新URLの内容が表示されるようになります。
Google先生にも、旧URLがリンクだと認識されるようなので、本来のリダイレクトとして使うのには適していなさそうです。外部コンテンツを内部コンテンツのように見せかけたい時に使えそうですが、そういう使い方はGoogle先生からペナルティを受けそうな気がしないでもないので、個人的にはオススメしないでおきます。
『Redirection』を使う時の注意
プラグイン『Redirection』を使う際は、WordPressのパーマリンクの設定がデフォルト以外になっている必要があります。そのため、デフォルトのパーマリンクを貫き通している方には適していません。もしそのようなポリシーがなければ、『Redirection』を使いたい時にパーマリンクを設定していなければ、お好きなパーマリンクに変えておきましょう。
私は、カスタム設定で 『/%postname%』 を推奨します。最後の”/”を入れるか入れないかは好みですね。
標準的な『Redirection』の使い方
『Redirection』をインストールして有効化すると、WordPressの管理画面のメニュー「ツール」に「Redirection」という項目が追加されます。ルールなどの設定は全てここになります。
表示されると、下記のような画面になります。最初にアクセスした時は、何もリダイレクトルールを定義していませんので、一覧には「項目は見つかりませんでした。」と表示されています。
基本的な設定をしていくのは、メニューの「Redirection」のみですので、今回はこの設定に絞って説明していきたいと思います。
リダイレクトルールを設定するときは、上図の赤枠で囲ったところで定義を入れていきます。
リダイレクトルールの設定画面説明
ここでは、リダイレクト設定をする項目を説明します。
■Source URL
転送元になるURLを入力します。ここでは自ドメインが対象なので、ドメイン/以降を入力します
■Match
基本的には”URL only”になります。リファラーやUserAgentの適合も見る場合には、指定が必要です
■Action
条件に合った際に、転送するときの動作を設定します
Redirect to URL:指定したURLに転送します
Redirect to random post:ランダムな記事に転送します
Pass-through:パススルー(通過)させる
Error(404):404エラーにする
Do nothing:なにもしない
Target URL: 転送先URLを入力します。ここはフルパスで入れます
リダイレクトルールのサンプル
ページ単位のリダイレクト
まずは、単純にAというページからBというページへリダイレクトさせる際のルールです。WordPressの記事名(Slug)を変えた時に使います。(分かりやすいように、ここではカテゴリ名がURLに含まれる形での例を示します)
↓
【転送先】http://hogehoge/category-A/321cba.html
Source URLには、転送元のURLを入れます。Matchは”URL Only”、Actionは”Redirect to URL”。正規表現にチェックは要りません。Target URLには、転送先のURLを入れてください。これで、1対1のリダイレクトルールが追加されます。
■転送ルールの設定
Source URL: /category-A/abc123.html
Match : URL only
Action : Redirect to URL “Regular expressionにチェック無し”
Target URL: category-A/321cba.html
カテゴリ名を変えた時の一括リダイレクト
Webサイトに来たアクセスを丸っと全て転送させたい場合のルールです。
↓
【転送先】http://hogehoge/category-B/abc123.html
■転送ルールの設定
Source URL: /category-A/(.*)$
Match : URL only
Action : Redirect to URL “Regular expressionにチェック有り”
ターゲット URL: http://hogehoge/category-B/$1
カテゴリと.htmlを抜いたリダイレクト
私が実際に使ったルールなのですが、パーマリンクの設定を見直して、カテゴリ名が入っているのでそれを抜いて、さらに記事名の末尾に”.html”が付いていたので取りました。もちろんそうすると検索エンジンからの流入やGoogle botは404エラーになってしまうので、このリダイレクトルールを設定しました。
↓
【転送先】http://hogehoge/abc123
■転送ルールの設定
Source URL: /(.*)/(.*).html$
Match : URL only
Atcion : Redirect to URL “Regular expressionにチェック有り”
Target URL: /$2
(.*)で任意の文字列を正規表現しているのですが、指定するときは”$”を使って何番目に出てきた正規表現かを指定してあげる必要があります。ですので、月と日付の両方を区切ってパーマリンクに入れている場合にも、これを応用すればリダイレクトできます。
数字/文字列のパターン指定のリダイレクト
あまり無いかもしれないですが、少し複雑なルールです。下記のように、パーマリンク内に4桁の数字や3字の文字列で区切られているようなURLがあるとします。その桁数は固定であれば、そのパターンを正規表現で指定することが可能です。
↓
【転送先】http://hogehoge/2015-Jun-abc123
■転送ルールの設定
Source URL: /archives/([0-9]{4})/([-a-zA-Z]{3})/(.*)$
Match : URL only
Action : Redirect to URL “Regular expressionにチェック有り”
Target URL: /$1-$2-$3
『Redirection』を使って転送設定:まとめ
301リダイレクトをさせる必要が出てきた時に、WordPressでの転送設定の情報が少なかったので今回まとめてみました。お役に立ちましたら幸いです。
転送処理はあまりしたくないものですが、行う必要な時が出てくることもあると思います。そういうときは、慎重に行って頂くことをオススメします。リダイレクトに失敗すると、404エラーページに飛んでしまい、Googleに記事がなくなったと判断されて検索順位が下がってしまいます。他にもGoogleからの評価という点で好ましくないこともありそうな気がしています。
『Redirection』には、404エラーのログを確認できる素敵な機能を備えていますので、定期的に404エラーの確認をするのもいいですよ。意図しないインデックスが貼られていないか、または怪しげなアクセスはないか確認できますからね。