リダイレクト
MyKinsta内でリダイレクトルールを追加することができます。リダイレクトルールを使用すると、ある場所から別の場所へシームレスにトラフィックを誘導可能です。これは、404エラーの防止、変更時の適切なSEOの確保、サイト内の正しい場所への訪問者の誘導に特に有用です。
リダイレクトの実装に無料のWordPressプラグインを使用すると、ほとんどのプラグインがwp_redirect関数を利用するため、パフォーマンスの問題が発生することがあります。また、wp_options
テーブルに自動で読み込まれるデータを追加するものもあり、データベースの肥大化を招きます。代わりにMyKinstaでこれを追加することで、ルールがサーバーレベルで実装され、はるかに高いレベルでの最適化が行えます。
リダイレクトを追加または削除した後は、キャッシュをクリアすることをお勧めします。
リダイレクトルールを追加する
リダイレクトを追加するには、MyKinstaで「WordPressサイト」>(サイト名)>「リダイレクト」画面に移動します。次に、「リダイレクトルールを追加」ボタンをクリックします。
次に、必要なリダイレクトルールのタイプを選択します。リダイレクトタイプの違いや選び方はこちらをご覧ください。Kinstaのツールは正規表現(regex)をサポートしています。
- 301リダイレクト:URLやコンテンツが「永続的に移動する」場合に使用します。通常、SEOの目的で使用する場合はこちらを使用します。
- 302リダイレクト:URLやコンテンツが「見つかった」または「一時的に移動した」場合に使用します。
下の例では、ブログ記事のURL(/blogpost
)が変更され、別のもの(/newblogpost
)に更新されたケースに301リダイレクトを追加しています。これにより、すべてのトラフィック、被リンク、Googleからの「リンクジュース」が新しいURLに送られるようになります。301リダイレクトは、「リンクジュース」の90~99%を渡します。どのドメインの接頭辞にリダイレクトさせたいかを選択することができます。このケースでは、wwwと非wwwの両方のトラフィックをリダイレクトすることにします。
注)これにより、UTMパラメータやURLの末尾にあるものが自動でリダイレクトされます。例えば、古いURLがBufferのようなツールを使ってソーシャルメディアで共有されている場合、次のように表示されるかもしれません。
https://wpdev.ink/blogpost/?utm_content=buffer
これは自動的に次のようになります。https://wpdev.ink/newblogpost/?utm_content=buffer
また、上の「リダイレクト元」の先頭に^
が追加されているのは、弊社のリダイレクトツールが自動的に正規表現を使用するためです。したがって、パスの先頭以外でマッチさせたい場合を除き、すべての「元」パスの先頭に^
を追加する必要があります。例えば、/blogpost
を単独で使用すると、/category/blogpost
のような他のURLでリダイレクトループを引き起こしてしまう可能性があります。
Ahrefsなどのツールで既存の被リンクをチェックすることも重要です。サードパーティのサイトに、あなたのサイトのURLの2つのバージョンを指す被リンクが存在するかもしれません。
https://wpdev.ink/blogpost
https://wpdev.ink/blogpost/
2つ目のURLの末尾にスラッシュがあることにご注意ください。これを考慮しないと、リダイレクトが破損する可能性があります。サードパーティのサイトがどちらのバージョンにリンクしているかわからない場合は、ワイルドカード正規表現量指定子 ?
の前にフォワードスラッシュ/
を付けることで、両方が機能するようにすることができます。
上記の例では、/blogpost
と/blogpost/
(フォワードスラッシュ付き)の両方へのすべてのリンクは、/newblogpost
にリダイレクトされます。
MyKinstaでリダイレクトを追加したら、すべてのリダイレクトルールをそこで管理できます。
正規表現(regex)を使用する
正規表現は、検索パターンを定義する文字のシーケンスです。MyKinstaリダイレクトツールで使用できる追加の例をいかに示します。「リダイレクト元」フィールドは正規表現をサポートし、「リダイレクト先」フィールドはグループ参照と特定の変数(例:$host
、$scheme
)をキャプチャすることができます。これについて重要な注意点があります。
- リダイレクトは追加した順にチェックされます。ベストプラクティスは、全体的なリダイレクトの前に、より具体的なリダイレクトを設定することです。
- デフォルトでは、リダイレクトツールは大文字と小文字を区別します(大文字と小文字を区別しないリダイレクトを使うには、以下を参照してください)。
- #、スペース、”、改行は制限されています。
- 引数によるリダイレクトはできません。
以下に一般的な正規表現の構文を示します。
^ | 以下が行頭にある場合にのみマッチ |
$ | 前が行末にある場合にのみマッチ |
? | 前に0回または1回マッチ(省略可能) |
. | 任意の1文字にマッチ |
* | 前に0回以上マッチ |
\ | 特殊文字のエスケープ |
(?i) | 大文字小文字を区別しない |
.* | 何にでもマッチするワイルドカード(どの文字列にもマッチする任意の文字) |
(.*) | 任意の場所の任意の文字列にマッチするワイルドカードを含むグループをキャプチャ |
正規表現の例
https://domain.com/store ページを含む
^/store
https://domain.com/store ページを含む(大文字小文字を区別しないリダイレクト)
(?i)^/store
https://domain.com/store.php のような単一ファイルを含める
^/store.php
すべてのPHPファイルのように、同じタイプのファイルをすべて含める
^/store/.*.php
https://domain.com/*store* のように特定のフレーズを含むものすべてを含める
不要なものをリダイレクトする可能性を減らすために、リダイレクト文字列/
を指定することを推奨します。
注意)このツールは自動で正規表現を適用するので、.*
のワイルドカードが自動で適用され、この場合は必要ありません。
/store or /store/
次のURL「https://mydomain.com/fast-racing」と「https://mydomain.com/fast-car-racing」両方を含める
^/fast(-car)?-racing
/amp/を含むすべてのブログ記事を元の非AMP URLにリダイレクトする
これは、Google AMPの無効化に関する記事の例です。Kinstaでは、/amp/
を含むすべてのブログ記事を元の非AMP URLにリダイレクトして、確実に元のURLに再インデックスされるようにする必要がありました。つまり、URIの/amp/
より前の部分をすべてキャッチし、「$1」の代わりに追加することになります。
/(.*)\/amp
301リダイレクトを追加して、すべてのWWWトラフィックを非WWW URLにリダイレクトする
ドメイン:www.example.com
リダイレクト元:^(.*)$
^
:URLパスの先頭にマッチ(.*)
:ドメイン以降の任意の文字列(0文字以上)をキャプチャ(正規表現のこの部分は、URLパス全体をキャプチャします)
リダイレクト先:https://example.com$1
$1
:(.*)
でキャプチャされた(^(.*)$
パターンから)コンテンツを参照(リダイレクト先の$1
はキャプチャされたコンテンツへの後方参照で、基本的にはキャプチャしたURLパスをリダイレクト先に追加します)
このルールは、www.example.com
ドメイン上の任意のURLパス(ルート/
を含む)を、https://example.com
ドメイン上の同じパスにリダイレクトします。例えば以下の通りです。
http://www.example.com/some-page
→https://example.com/some-page
http://www.example.com/
→https://example.com/
www.example.com
上のURLはhttps://example.com
上の同等のURLにリダイレクト
301リダイレクトを追加して、すべての非wwwトラフィックをwww URLにリダイレクトする
ドメイン:example.com
リダイレクト元:^(.*)$
^
:URLパスの先頭にマッチ(.*)
:ドメイン以降の任意の文字列(0文字以上)をキャプチャ(正規表現のこの部分は、URLパス全体をキャプチャします)
リダイレクト先:https://www.example.com$1
$1
:(.*)
でキャプチャされた(^(.*)$
パターンから)コンテンツを参照(リダイレクト先の$1
はキャプチャされたコンテンツへの後方参照で、基本的にはキャプチャされたURLパスをリダイレクト先に追加します)
このルールは、example.com
ドメイン上の任意のURLパス(ルート/
を含む)を、https://www.example.com
ドメイン上の同じパスにリダイレクトします。例えば以下の通りです。
http://example.com/some-page
→https://www.example.com/some-page
http://example.com/
→https://www.example.com/
example.com
上のURLはhttps://www.example.com
上の同等のURLにリダイレクト
301リダイレクトを追加して、あるドメインから別のドメインにすべてのトラフィックをリダイレクトする
301リダイレクトを追加して、あるドメイン(kinstaexample.com)から別のドメイン(newkinstaexample.com)へ、同じパス/ページスラッグを維持したまま、すべてのトラフィックをリダイレクトします。これは、サイトのドメインを変更しても同じページスラッグを維持する場合に推奨されます。例えば、https://kinstaexample.com/contact を https://newkinstaexample.com/contact にリダイレクトすることができます。
ドメイン:kinstaexample.com
リダイレクト元:^(.*)$
^
:URLパスの先頭にマッチ(.*)
:ドメイン以降の任意の文字列(0文字以上)をキャプチャ(正規表現のこの部分は、URLパス全体をキャプチャします)
リダイレクト先:https://newkinstaexample.com$1
$1
:(.*)
でキャプチャされた(^(.*)$
パターンから)コンテンツを参照(リダイレクト先の$1
はキャプチャされたコンテンツへの後方参照で、基本的にはキャプチャされたURLパスをリダイレクト先に追加します)
このルールは、kinstaexample.com
ドメイン上のすべてのURLパス(ルート/
を含む)を、https://newkinstaexample.com
ドメイン上の同等のURLパスにリダイレクトします。
例えば以下の通りです。
http://kinstaexample.com/some-page
→https://newkinstaexample.com/some-page
http://kinstaexample.com/
→https://newkinstaexample.com/
kinstaexample.com
のURLはすべて、https://newkinstaexample.com
の対応するURLにリダイレクト
多すぎるリダイレクト
リダイレクトの設定を誤ると、無限にリダイレクトが繰り返され、ERR_TOO_MANY_REDIRECTS のようなエラーが表示されることがあります。これが発生した場合には、リダイレクトルールを再確認することをお勧めします。この現象は、特定のURLが「リダイレクト元」と「リダイレクト先」の両方に 含まれていることが原因となることがあります。
例えば、次のようにするとリダイレクトの無限ループが発生します。
リダイレクト元: ^/blog/about
リダイレクト先:https://domain.com/blog/about-me
プロセスが^/blog/about
に達すると、残りの部分-me
は加味されずに無限ループを引き起こします。実際には文字列の終点と始点を指定する必要があります。この問題を解決するには、次のようにすることができます。
リダイレクト元:^/blog/about$
リダイレクト先:https://domain.com/blog/about-me
$
の文字は文字列が正確に存在し、その後に何もない場合のみリクエストを停止してマッチするようにNginxに指示するためのものです。
その他の正規表現
Regexで何ができるのか、基本を理解するために役立つリンクをいくつかご紹介します。
SEOとページ表示速度を最大化するWordPressリダイレクトのベストプラクティスについて動画での解説もご用意しています。
リダイレクトルールを一括インポートする
より複雑な設定を行っている場合や、WordPressサイトの301リダイレクトプラグインを削除したい場合もあるでしょう。CSVファイルからリダイレクトルールを一括インポートすることもできます。
一括インポートの注意事項
- リダイレクトの順序は、インポートするファイルの順序と同じになります。リダイレクトは追加した順番にチェックされるため、順番を意識することが重要です。注意点として、広範なリダイレクトの前に特定のリダイレクトを追加するのがベストプラクティスです。
- インポートはリダイレクトのリストに追加するもので、既存のリダイレクトを上書きしたり変更したりするものではありません。
- MyKinsta内のリダイレクト数が5,000件近くになると、「リダイレクトルール数の上限に達しました」という警告が表示されます。一括インポート機能を使用すると、一度に最大9,999件までインポート可能です。1万件以上ある場合も、数回に分けて一括インポート機能を利用してください。追加リダイレクト数に上限はありません。
- 大量のリダイレクトルールを削除する(リダイレクト一覧をインポートする前など)には、「ドメイン」の横にあるチェックボックスにチェックを入れてすべてのドメインを選択するか、削除したい各ルールの横にあるチェックボックスにチェックを入れて、右上に表示される「リダイレクトルールの削除」ボタンをクリックしてください。リダイレクトのページが複数ある場合、すべてを選択すると、対象とするページのリダイレクトのみが選択されます。各ページのリダイレクトに対して、この操作を繰り返す必要があります。
1. 一括インポートの選択
一括インポートのリダイレクトルールを追加するには、MyKinstaでサイトをクリックし、「リダイレクト」に移動し「一括インポート」ボタンをクリックします。
2. リダイレクトルールのインポート
CSVファイルの内容を所定のフィールドに貼り付けます。CSVには、ステータスコード、ドメイン(全ドメインをカバーするにはallを使用します)、リダイレクト元、リダイレクト先、国(任意)、都市(任意)の順にカンマで区切られた情報が含まれている必要があります。各リダイレクトルールは改行してください。「リダイレクトルールをインポート」ボタンをクリックします。
一括インポートは正規表現(regex)に対応しています。例は次の通りです。
301,all,^/oldpath/?$,https://newlocation.com/newpath
302,domain.com,^/oldpath/?$,https://newlocation.com/newpath,HU,Hungary
302,domain.com,^/oldpath/?$,https://newlocation.com/newpath,AL,Albania,Ballsh
リダイレクトをエクスポートする
何百、何千ものリダイレクトをお持ちの方もいらっしゃると思います。リダイレクトをエクスポートすることで、オフラインでの編集や再インポートが簡単になり、必要に応じて他のツールやサービスにリダイレクトを簡単に転送することができます。そこで便利なのが「CSV形式でエクスポート」です。
WordPressからリダイレクトをエクスポートする
既存のリダイレクトをWordPressプラグインからMyKinstaに移行することも可能です。多くのプラグインの設定にエクスポート機能が用意されています(下記のEPS redirectsプラグインのエクスポートオプションの例)。一括インポートする前に、フォーマットが適切であることを確認してください。
Simple 301 Redirectsプラグインを使用している場合は、Export Simple 301 Redirects to CSVプラグインを使用してリダイレクトをエクスポートできます。
注意事項
シンプルなリダイレクトの設定については、弊社カスタマーサポートにお気軽にご依頼ください。弊社ではApacheを使用していないため、.htaccessを使用することはできません。Nginxで独自のリライトルール構文を実行しています。.htaccessファイルでできることはすべてNginxの構文に「変換」することができます。サイトの.htaccessファイルに多くの複雑なルールが含まれている場合には、開発者と協力しこれをNginx形式に変換し、変換後のルールをサポートまでご提供ください。
リダイレクトのテスト
リダイレクトを追加または更新する際には、その変更をテストすることをお勧めします。無料のHTTP ステータスとリダイレクトチェックツールを使って、任意のURLのHTTPステータスとリダイレクトチェーンの有無を確認してください。このツールを使って、レスポンスヘッダやクライアントサイドのエラーを確認したり、リダイレクトが正しく動作しているかテストすることができます。