特定の記事を301リダイレクトする方法



プラグインAll-in-One WP Migrationで特定の記事を移行しました

下準備

サイトを別のドメインに丸ごとリダイレクトする場合は「.htaccessファイル」に新URLを指定すれば良いので簡単ですが、大量の記事をリダイレクトするためには下準備が不可欠。器用な方は下準備は飛ばしてください。

# Redirect
Redirect permanent / 新URL

移行したいURLを抽出

エクセルでスラッグ抽出

特定記事のリダイレクトの下準備にエクセルを使いました

Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

リダイレクトコード

.htaccessファイルに追記するのですが、直接追記するのではなく「ダウンロード→エディタで開いて追記→保存してアップロード」します。試しに1つのURLをテストしてから足していくと確実です。

301リダイレクトを指定することにより、コードを外さない限り永遠の転送となります。

# Redirect
RewriteEngine on
RewriteRule ^スラッグ$ 新URL [L,R=301]

リダイレクトできない場合

途中からリダイレクトできなくなったので訂正しました。
スラッグの後に / を加えます。

# Redirect
RewriteEngine on
RewriteRule ^スラッグ/$ 新URL [L,R=301]

(もしくは、スラッグの後の $ を外しても良いらしいです)

参考までに、当サイトの場合はこのように指定。

# Redirect
RewriteEngine on
RewriteRule ^goto-travel/$ https://zbnrk.com/goto-travel/ [L,R=301]

複数の記事をリダイレクトするためには、このように延々と繋げていきます。

# Redirect
RewriteEngine on
RewriteRule ^スラッグ/$ 新URL [L,R=301]
RewriteRule ^スラッグ/$ 新URL [L,R=301]
RewriteRule ^スラッグ/$ 新URL [L,R=301]

もしくはRedirect permanent

上記のコードで転送できないサブディレクトリがあったのですが(なんでだろ)「Redirect permanent」でできました。

Redirect permanent /スラッグ/ 新URL

meta refreshタグは使わない方が良い

meta refreshタグでもリダイレクトは可能ですが(「〜秒後に新しいページへ移動します」というもの)、Googleでは推奨していませんので使わない方が無難です。

注意点

尚、上記の例はパーマリンクを「カスタム構造」「/%postname%」に設定した場合になります。

クエリー文字列【?p-***】を指定している場合はかなり複雑。
「旧URLにはクエリー【?p-***】が含まれているけど、新URLではクエリーを除外」を指定します。
(コードテストはしていません)

RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)p=***(&|$)
RewriteRule ^/?$ 新URL? [L,R=301]
【?p-***】を選択すると「該当ドメイン専用のURL」みたいな感じになって、いざという時手間が増えるので避けた方が無難です。推奨は「/%postname%」

ひたすらコピペ

サクラエディタにこの文を列記してから、エクセルで抽出したスラッグを延々とコピペしていったのですが、すぐに飽きて結局10日ほど要してしまいました。

RewriteRule ^スラッグ/$ https://zbnrk.com/スラッグ/ [L,R=301]

「Controlキー+Cキー」でコピー。「Controlキー+Vキー」で貼り付け。

リダイレクトチェック

リダイレクトされているかチェックする方法

移転元の記事を非表示もしくは削除

記事が重複しないよう1つ1つ「クイック編集→非公開→更新」します。もしくは削除でもOK。

プラグインは使わない方が良い

「簡単にリダイレクトできるプラグイン」もありますが、私は使わない方が良いと思います。
なぜならリダイレクトはすぐ解除できるものではないから。
プラグインの更新が途絶えたらリダイレクトをやり直すことになります。

同様に、テーマのリダイレクト設定も使わない方が良いかと。一見便利ですけどね。

しかしリダイレクト疲れた…もうやりたくない…