小さめのWordPressブログを運営していて、「パーマリンクを変更したいけど301リダイレクトの設定が難しそう」と思っている人向けの記事です。
私が当サイトの全投稿記事に実際に301リダイレクトを設定したときの手順をご紹介します。
301リダイレクト用のプラグインは使わずに、.htaccessファイルに手作業で書き込む方法をとりました。
なぜ301リダイレクトが必要になったのか
投稿記事のパーマリンク設定にカテゴリを含めていた
当ブログは2006年に無料ブログ(Seesaaブログ)で始めました。
ブログが日記がわりだった時代ですね。懐かしい。
更新頻度は少ないものの、運営期間が長く、その間に私の興味も移り変わりました。今まで2度ほどカテゴリ再編を行いました。
一度目はSeesaa時代。記事URLのことなど頭にありませんでしたし、検索ユーザーのことも全く考えていませんでした。たしか2012年です。
二度目はSeesaaからWordPressに引っ越した2018年です。いい機会だったのでカテゴリを見直しました。同時に、WordPressの記事URL(パーマリンク)に、カテゴリを含めました。
/%category%/%year%/%monthnum%/%post_id%/
こうなっていたわけです。カテゴリが入ってるとわかりやすよね、と思いました。
カテゴリを変えると記事URLが変わる
ところが、2021年11月になって、またカテゴリ再編の必要が出てきました。このブログで書いていきたいことが、今までと変わったからです。
パーマリンクにカテゴリを含めているので、カテゴリ再編=URL変更ということになります。
せっかくの被リンクが404に!それは困る!
アクセスは微々たる数値の当ブログですが、幸運なことにTwitterなどからリンクをいただいている記事があります。URLが変わってしまうと、そこから来てくれる人たちがもれなく404ページに誘導されてしまいます……。
Googleさんの評価もリセットされてしまいます。日に数十人のアクセスしかない塵サイトですが、だからこそせっかくの良い検索順位が大切なんです……。
そこで、新しいURLに自動転送&Googleさんの評価を引き継げる、301リダイレクトを設定することにしました。
さらに、今後のカテゴリ再編に備えて、パーマリンクからカテゴリを外しました。パーマリンクについては、投稿名のみにするのが良いという記事を多く見かけます。
ただ私は、記事ごとに投稿名を考えるのが面倒・後々投稿名を変えたくなるかもしれない、という2つの理由から、投稿idをそのまま使っています。
/%year%/%monthnum%/%post_id%/
年・月を入れているのは、私にとっては日記代わりでもあったので日付が大事な情報だからです。
301リダイレクトの設定方法から.htaccessを選んだ理由
.htaccessファイルへの301リダイレクトの設定方法は、全面的にこの記事を参考にしました。とにかく丁寧に説明されているので、迷うことは少なかったです。
WordPressで301リダイレクトを設定する方法は2つあります。
- プラグインを使う
- .htaccessファイルに301リダイレクトを書き込む
どちらもメリット・デメリットがありますが、私は.htaccessファイルに書き込む方を選びました。
プラグインの場合は不具合の心配も捨てきれない
「.htaccessファイルをいじるのは怖い」という場合はプラグイン一択になります。
ただプラグインは今後もずっと使えるとは限りません。開発が止まって、新しいバージョンのWordPressでうまく動作しなくなるという可能性も捨てきれないのです。
もう一つ、プラグインを使ったとしても、それなりに手間がかかりそうだなと感じました。
.htaccessファイルに書くだけ、というシンプルな方法
幸いなことに、私は以前、別のサイト作成時に.htaccessファイルに何やら書き込むという経験をしました。
- FTPソフトを使ってサーバーにアクセス
- .htaccessファイルをダウンロード
- テキストエディタで開き、書き込み、最後を改行して保存
- サーバーに上書きアップロード
というシンプルな手順です。書き込む内容さえ間違えなければ、必要以上に恐れることはありません。
それに、.htaccessファイルを開けば書いてあることがすべて見えます。個人的にはそこが安心できるポイントでもありました。
この方法は、.htaccess使用可能なサーバーを使っている場合に限られます。作業に入る前に、サーバーの仕様を確認してくださいね。
手順1.事前にWordPress全体のバックアップ
恐れることはないといっても、大事なファイルをいじるのですから何が起きるかわかりません。
WordPressサイト全体のバックアップをとります。用心に越したことはありません。
プラグインを使ったバックアップではなく、手動でまるごとバックアップするのが最善だと思います。
もしWordPressブログ自体が動かなくなってしまったらプラグインも動かないので……
全体のバックアップをとるのに参考にした記事です。
引っ越しの解説なので色んな情報がありますが、参考にしたのは2項目です。
- WPデータファイルを移転元サーバーからダウンロード
- WPデータベースを移転元サーバーからダウンロード
具体的に行うことは、
- サーバーからWordPressブログの全データをダウンロード
- phpMyAdminから、データベースをエクスポート
の2つです。
手順2.変更前の記事URLを抽出する
記事数が多いと、記事URLを抽出する作業が大変になってきます。効率化の方法は、さきほどのまめさんの記事でも紹介されている「【WordPressサイト限定】リダイレクトのための.htaccessへの記述を表計算ソフトとget_postsで効率化」に詳しく書いてあるのですが、どうやらphpファイルをいじらねばならない模様。
うーん。拒否反応が。phpまったくわからない。
別の方法を探ってみたところ、便利なプラグインを発見したので、使ってみることにしました。
プラグインを使用する準備
「Export any WordPress data to XML/CSV」という、記事情報を抽出できるプラグインです。こちらで使い方が詳しく紹介されています。
紹介されているアイコンが現在(2021.11)少し変わっていますが、同じものです。
記事でも説明されているのですが、このプラグインをインストールすると、インストール済みプラグイン一覧に別の名前(WP All Export)で現れるので一瞬どきっとしました。笑
インストール・有効化
プラグイン画面から検索します。「WP All Export」でも出てきます。似たようなアイコンのプラグインがあるので、間違えないように名前を確認してください。
インストールして有効化すると、ここから操作できるようになります。
データ抽出・ダウンロード
必要なのは投稿記事のURLなので、プルダウンメニューをクリックして「投稿」を選び、「エクスポートファイルをカスタマイズします。」をクリック。
次の画面で、すでにIDやTitleなどが枠内に用意されていますが、不要なものは枠外へドラッグすれば消えます。
右側の「標準」の中にあるパーマリンク(Permalink)を枠内にドラッグします。
下書きなどもすべて抽出されてしまうので、「その他」にあるステータス(Status)も枠内へドラッグし、抽出後に下書きか公開済みかを判別できるようにします。
エクスポートタイプをCSVファイルにして(デフォルトでそうなっていると思います)、「続行」をクリック。
次の画面で、「エクスポートファイルにBOMを含める」にチェックを入れて、「エクスポートの確認&実行」をクリックします。
エクスポートファイルが出来上がるとダウンロードできるようになります。CSVをクリックしてダウンロードします。
手順3.記述用のデータを作成する
抽出データをグーグルスプレッドシートで開く
データ作成にはGoogleスプレッドシートを使いました。エクセルとかでももちろんOKです。
新規スプレッドシートの「ファイル」>「インポート」>「アップロード」でCSVファイルをアップロードします。ウインドウが出るのでそのまま「データをインポート」をクリックします。インポートが終わったらファイルを開きます。
Status欄の draftは下書き、privateはプライベート、publishは公開済みです。公開済みを残して、下書きなどは行ごと削除します。
この古いURLデータのスプレッドシートをコピーして保存しておき、古いURLからのリダイレクト確認のときに使います。
データ作成
301リダイレクトの記述方法
まめさんの記事の「301リダイレクトを作成」を参考に、リダイレクトの書き方を確認します。
「個別記事についての書き方は2種類ありますが、どちらでもOK」とのことなので、わかりやすい方の書き方でやってみることにしました。
<例>
.htaccessファイルがルートにある場合、だそうです
スプレッドシートの設定
こんな感じにスプレッドシートを作り、計算式を使ってA~Eをくっつけます。BとEには半角スペースを入れておきます。
F欄に計算式を入れておくと、指示通りに文字列をくっつけて表示してくれます。画像の例だと、
=A627&B627&C627&D627&E627
となっています。&で文字列をつなげる感じです。
*
ドメイン部分を抜くには、検索と置換を使い、置換後の文字列の欄を空欄にします。選択部分があれば、その中だけに適用されます。
新URLはカテゴリーを手作業で抜いていきました。
PCのテキストファイルにコピペして確認
F列の文字が入っている行をすべて選択してコピーし、テキストエディタにペーストして、スペースなどがちゃんと入っているか確認します。
F列をまるごと選択した場合、空欄もすべてコピーされるので、記事数が少ない場合、後半に大量の改行がペーストされます。
コピーできてないじゃん! って一瞬思っちゃうんだよね。
手順4..htaccessファイルに記述
ここに来てから?という感じもしますが(すみません)、.htaccessファイルの目的や設置方法について詳しい記事をご紹介します。
FTPソフトで.htaccessファイルをダウンロード
ファイルはここにありました。
ダウンロードしたら、もしものときのために、変更前の.htaccessファイルのコピーを作って保存しておきます。
ファイルを開いてリダイレクトを記述、改行、保存
ファイルを開いたら、一番最後のところにリダイレクトを記述。さっきのをまるっとコピペすればOK。一番最後は改行しておくこと(.htaccessファイルの決まりだそうです)。
いよいよ、パーマリンクを変更する
後で戻す必要が出たときのために、WordPressの設定の、変更前のパーマリンク設定をテキストファイルなどにコピペしておきます。
/%category%/%year%/%monthnum%/%post_id%/
それから、WordPressの設定でパーマリンクを変更します。変更したら、古いURLにアクセスできなくなっていることを確かめます。
.htaccessファイルを上書きアップロード
パーマリンク変更後、301リダイレクトを書き込んだ.htaccessファイルをアップロードします。
アクセスできない人が最小限で済むように、あまり時間をあけないようにします。
古いURLにアクセスして、新しいURLが表示されることを確認
古いURLにアクセスしてみて、新しいURLが表示されたら、リダイレクトの設定は無事完了です。
GoogleChromeブラウザを使っている場合、キャッシュが残っていてうまく確認できないことがあります(焦ります)。他のブラウザで確認してみると良いです。
記事が多いとすべての古いURLを確かめるのは大変ですが、主要な記事だけでも確認しておくと安心です。
もしここでうまくリダイレクトされないときは、変更前の状態に戻します。
- 変更前の.htaccessファイルをアップロードしてもとに戻す
- 変更前のパーマリンク設定に戻す
それから、リダイレクトの記述に間違いがないか確認しましょう。
まとめ
当サイトのWordPressのパーマリンク変更にともない、私が実際に.htaccessファイルに301リダイレクトを記述したときの手順を紹介しました。
URL抽出やリダイレクトの記述は、PHPなどではなく、わかりやすい方法を採用しました。おかげで難しいことなく301リダイレクトが設定できました。
今後は思い立ったらいつでもカテゴリ再編が可能になり、気持ちがスッキリしました!
また、ご紹介したプラグインで記事情報を抽出できるようになり、ブログ内容の見直しに使えて助かっています。
301リダイレクトの設定、やってみるまでは私も不安でした。
でも設定してよかったと思っています。
この記事が、301リダイレクトに躊躇してパーマリンク変更に踏み切れなかった方のお役にたてばうれしいです!
コメント