WordPressサイトを運営しているとパーマリンクを変更したいと考えるときがあります。パーマリンク自体を変えるのは簡単なのですが、そのあとの301リダイレクト設定が面倒です。
パーマリンク変更後の転送に有効だと評判のPermalink Redirect を使おうとしたのですが、エラーというか不具合というか、うまくいかない状態だったのです。
Permalink Redirect を使ったらpost_id(記事ID)が重複するエラー
具体的にどういった現象かというと、
/%category%/%post_id%/
を
/archives/%post_id%/
に変えようとしたら
https://itwo.biz/archives/8837/8837/
という状態になりました。
これによってどんな弊害があるかというと、
https://itwo.biz/archives/8837/
https://itwo.biz/archives/8837/8837/
の二つの記事が存在するというSEO的に最悪な状態です。
なぜ?どうして?重複して記事IDがするの?
疑問を抱きながらも具体的な解決策を模索している中、
https://itwo.biz/archives/8837/8837/
この記事を、
https://itwo.biz/archives/8837/
に転送させたらいいのでは?
という、301リダイレクトの連続転送を思いつき、再びググります。
しかし、.htaccessを使って記述する方法はいくつかありましたが、何度試してみてもどうもうまくいかないので断念しました。
【推奨】パーマリンクを変更してリダイレクト設定するには「Redirection」プラグイン
格闘すること数時間、ようやく見つけた神記事によって解決の方向に向かいます。
まずはワードプレスのプラグインから「Redirection」を検索してプラグインを入手して有効化します。
「ツール」>「Redirection」より、設定画面に入れます。
「新しい転送ルールを追加」から設定するのですが、ここでは正規表現で記述する必要があります。これがまたハードルが高そうで断念しそうになるのですが、次の手順に沿って進めていけばスムーズに完了させることができました。
今回の転送するにあたっての環境
本記事の内容は前提として、
/%category%/%post_id%/
を
/archives/%post_id%/
に変更した場合です。
※設定するパーマリンク内容によって適宜変えてください。
Redirection設定方法
まずはカテゴリのURLをメモ帳やエクセルなどに書き出します。(私はテキストエディタを利用しました)
カテゴリは「投稿」>「カテゴリ」にある「スラッグ」を見てみましょう。
これをテキストエディタ(メモ帳など)やエクセルに書き出します。
こんな感じです。↓
そこに、【([\d+])】を書き足します。
こんな感じです。↓
「Redirection」プラグインに転送ルールを登録するのですが、以下のようにして入力して「新しい転送ルールを追加」します。
- ソースURLには書き出したものを記入
- 正規表現にチェックを入れる(ココ重要)
- ターゲットURLには【/archives/$1】をいれる
※「/archives/%post_id%/」という最後に「/」が入るパーマリンク設定ですが、ここでは最後にスラッシュを入れません。
その他、歯車のマークを押すと詳細設定が可能ですが、そのままでOKです。
- タイトル:任意
- 一致条件:URLのみ
- マッチしたとき:URLへ転送
- 次のHTTPコードと共に:301-恒久的に移動
- グループ:転送ルール
で、「転送ルールを追加」で設定完了です。
一つ入力したらきちんと転送できているか試してみましょう。
問題なく転送されていたらこれを繰り返します。その際に入力する量が多い場合にはCSVファイルを使うと便利です。
40個くらいあったカテゴリもCSVファイルを使ったらあっという間に設定が完了します。カテゴリ数が多い人にはおすすめです。
Search Regex でサイト内のリンクを一括編集するのを忘れずに
Search Regex プラグインを使ってサイト内のリンクを旧URLから新URLに置き換えます。
これをやらないと転送自体はされますが、ブログカードなどがうまく表示されない場合があります。この機会に一気に済ませておきましょう。
Search Regex プラグインは一括ですべて置き換わってしまうので、まずは「search」ボタンで置き換わるページを確認するなど目視での確認は必須です。
サーチと置き換えのURLにはスラッシュ(/)まで入れることによって、カテゴリまでを置き換えるようにしました。(それでも念のため目視で確認してくださいね)
まとめ
ずっと変えたいなと思っていたパーマリンクと転送設定問題が解決してスッキリしました。記事IDが重複して表示された理由は不明ですが、他のサイトで試してみても同様の現象が起きるので階層の問題かもしれません。
今回の方法は.htaccessファイルを使わないので初心者には安心です。Permalink Redirect を使って記事IDが重複して困っていた人はこちらの方法を試してみてください。
※私を救ってくれた神記事(debate さま)