WordPress permalinkの変更

Udemyfun.comのパーマリンク変更を完了したマスターU(@Udemy11)です。

Udemyfun.com】はWordPressを使ってサイトを構築していますが、はじめたときにパーマリンクの設定をデフォルトにしていました。

デフォルトの設定だと、パーマリンクは

https://udemyfun.com/?p=2083

といった感じになります。

記事を書くたびに数字の部分が増えていくのですが、Udemyfun.comの記事は現在100記事ほどあるので、数字は2000を超えるくらいになっていました。

これの何が困るのかというと、これと言って困ることはないのですが、URLを見ただけでは何を書いている記事なのかわからないので、記事のリライトの際にちょっと面倒だったりするのと、単純に、せっかく時間をかけて書いた記事のURLが数字になっているのがなんとなくいやなんです。

といいつつも、これまではパーマリンクを変更するまでの気持ちにはならなかったのですが、Python学習【365日チャレンジ!】をはじめたのをきっかけに、Googleからの評価の問題もあったので、思い切って変更することに決心したというわけです。

ちなみにGoogleのガイドラインを見てみると次のようなことを推奨しています。

シンプルな URL 構造を維持する

サイトの URL 構造はできる限りシンプルにします。論理的かつ人間が理解できる方法で(可能な場合は ID ではなく意味のある単語を使用して)URL を構成できるよう、コンテンツを分類します。たとえば、航空機(aviation)に関する情報を探している場合、http://en.wikipedia.org/wiki/Aviation のような URL であれば、見ただけで必要な情報であるかどうかを判断できます。http://www.example.com/index.php?id_sezione=360&sid=3a5ebc944f41daa6f849f730f1 のような URL 自体は、ユーザーの関心を引くことはほとんどありません。

URL では区切り記号を使うと効果的です。http://www.example.com/green-dress.html という URL の方が、http://www.example.com/greendress.html という URL よりずっとわかりやすくなります。URL にはアンダースコア(_)ではなくハイフン(-)を使用することをおすすめします。

ようするに、シンプルでわかりやすいURLにしなさいってことですね。

なので、今回、パーマリンクを投稿名にして、英単語を並べたある程度意味のわかるURLに変更することにしました。
ちなみに、英単語の綴りが間違っているかもしれませんが、そこはご愛嬌。

過去記事を見ながらGoogleの検索結果に影響が出ないような方法を探りつつ変更したので、健忘録ついでに誰かの参考になれば幸いです。

パーマリンクを変更する方法

以前やってしまったことがあるのですが、いきなりパーマリンクを初期設定の【基本】から【投稿名】に変更すると、大量のリンク切れが生じて、ページが見つからない404エラーがたくさんでてしまいました。

Googleの検索結果も、今存在している【基本】のパーマリンクのURLにリンクがはられているので、パーマリンクを【投稿名】に変えることによって、ページが見つからない状態になるわけです。

もちろんGoogleからの評価はダダ落ちで、しかもすべてが新しいページとなり、再度、一から評価を積み上げていかないとならなくなるので、間違いなくアクセスもダダ落ちになってしまいます。

そうならないためにも、今あるページから新しいURLへの恒久リダイレクト、つまり、301リダイレクトをすべてのページで行う必要があります。

サイトを作成し始めるときは、基本誰もが初心者なので、WordPressの設定は間違いなくデフォルトではじめますよね。
なので、ほとんどの人はパーマリンクが【基本】の状態になっていて、サイトを運営していくうちに、パーマリンクは【投稿名】で英字に指定したほうがいいと気づくんです。

過去の私のように、気づいてすぐに何も考えずにパーマリンクを変更してしまうと大変なことになってしまうわけですが、世の中にはWordPressのパーマリンクの変更方法をブログなどで紹介してくれている人がたくさんいます。

ネットに公開されているWordPressのパーマリンク変更方法を調べながら、最も安全かつ確実にWordPressのパーマリンクを変更する方法を紹介します。

【Permalink Redirect】を使う

WordPressのパーマリンクを運営中に変更する方法を調べると、最も紹介している記事が多いのが【Permalink Redirect】というプラグインを使う方法です。

ただ、この【Permalink Redirect】は、2020年2月12日現在で、サイトが閉鎖しているのかダウンロードすることができません

WordPress パーマリンクの変更

ヒットする記事は、過去の記事ばかりだったので、Googleの検索結果を最新1ヶ月に指定して調べてトップに表示されたのが次の記事。

KUNJIはとても知りたがり
パーマリンクを途中で設定変更してみた!パーマリンクの変更には細心の注意が必要だ
https://urochoroindoor.org/blog/permalink/
パーマリンクとはブログやサイトの住所みたいな物だ!家の住所も一度決まったら変更しないのが得策です。万が一、変更する場合には最新の注意が必要

結局この最新の記事から貼られているリンクも同じようにページが存在しませんでした。

マスターU

2020年の記事なのに、ほんとにこの人たち、ちゃんとパーマリンクの変更ができてるのかな?
テキトーにネットでみつけた記事をリライトしてるだけなんじゃない?

なんて思ったのは私だけ!?

それとも、ほんとに最近になってサイトが削除されたんでしょうか?

とにかく、【Permalink Redirect】でパーマリンクの変更ができないということがわかったので、別の方法を探すことに。

で、次に見つけた方法が2つのプラグインを使って301リダイレクトをかける方法です。

【List Urls】と【Redirection】

WordPressのパーマリンク変更についての記事はたくさんあるのですが、【Permalink Redirect】を使う方法ばかりで、他の方法で簡単に変更できそうなものが見つからず、最終的にたどり着いたのがこちらの方法です。

【List Urls】というプラグインで現在のURLやタイトルの情報をCSVに書き出して、パーマリンクを変更した後に再び新しくなったURLを書き出し、古いパーマリンクから新しいパーマリンクへ【Redirection】というプラグインで301リダイレクトするという方法です。

手っ取り早くかんたんにパーマリンクを変更できいる方法を探していたのですが、最初に見つけた【Permalink Redirect】は使えないので、最終的にこちらの方法でパーマリンクを変更することに決めました。

やり方が決まったら準備が必要なので、つづいて実際の作業を進めていきましょう!

記事のスラッグを英字に変更

WordPressの記事には、タイトルとスラッグという情報が記録されていますが、スラッグはパーマリンクを【投稿名】に設定したときにドメインのあとに表示される文字になります。

パーマリンクの設定が【基本】になっている場合、スラッグは日本語の記事タイトルが入っています。

WordPress パーマリンクの変更

日本語の記事タイトルが長い場合は、最後の方が省略された形になりますが、基本は日本語タイトルそのままが入っています。

もし、スラッグを変更しないままパーマリンクを【投稿名】に変更すると、URLのあとに日本語が続くURLになり、つぎのようなURLになってしまいます。

https://udemyfun.com/%E3%81%93%E3%82%8C%E3%81%8B%E3%82%89%EF%BC%91%E5%B9%B4%E9%96%93Python%E3%82%92Pythonista%E3%81%A7%E6%9C%AC%E6%B0%97%E3%81%A7%E5%AD%A6%E3%81%B6%E3%81%9E%EF%BC%81

つまり、サイトの運営中に、WordPressのパーマリンクを【基本】などから【投稿名】に変更する場合は、パーマリンクの変更前に、すべての記事のスラッグを英字に変更する必要があるわけです。

ほんと最初からちゃんと考えて設定しておけばよかったと後悔する瞬間ですね。

通常の【記事編集】からだとスラッグを変更することができないので、記事一覧画面から変更する記事にカーソルを持っていき、表示される【クイック編集】をクリックしてスラッグを変更します。

WordPress パーマリンクの変更

記事数が多いと大変な作業になってしまいますが、地道に入力するしかありませんので、今回は、適当に考えた英単語を並べながら、1時間程度で約100記事のスラッグを変更しました。

固定ページ・カテゴリー・タグのスラッグも変更する

ついつい忘れてしまいがちですが、固定ページやカテゴリー、タグのスラッグもすべてアルファベット表記にしておきましょう。

記事のスラッグをすべて変更したあと【List Urls】で書き出したCSVを見てから気づいたのですが、これらのページもスラッグが日本語になっているものがほとんどです。
タグのページが検索されて表示されることはほぼありませんが、Googleからエラーページとして認識される可能性があるので、全て変更しておいたほうがいいでしょう。

これらすべてのスラッグの変更が完了すれば、いよいよ【List Urls】でCSVを書き出します。

ちなみに、CSVを書き出してからスラッグを変更する順番でも問題はありません。

【List Urls】でCSVエクスポート

【List Urls】をインストールします。

上記サイトからzipファイルをダウンロードして、WordPressの新規追加でzipファイルをアップロードします。

インストールが完了したらプラグインを有効化します。

次に、左メニューの【ツール】から【List Urls】をクリックし、表示される画面の【Download CSV】ボタンをクリックして、データをダウンロードします。

WordPress パーマリンクの変更

ダウンロードしたCSVをGoogleスプレッドシートで開くと記事タイトルとURL、記事IDなどが保存されています。
※エクセルを使うと最終的にインポートの段階でエラーになるので、エクセルではなくGoogleスプレッドシートを使ったほうがいいです。

WordPress パーマリンクの変更

パーマリンクを【投稿名】に変更

いよいよパーマリンクの変更です。

WordPress管理画面左メニューの設定から【パーマリンク設定】をクリックします。

WordPress パーマリンクの変更

【基本】にチェックされていたものを【投稿名】にチェックを入れて保存ボタンをクリックします。

これで、パーマリンクの変更が完了です。

投稿一覧の画面からどれかの記事にカーソルを合わせて【記事の編集】をクリックするとパーマリンクが変更されていることがわかります。

WordPress パーマリンクの変更

変更された投稿のリストを取得

続いて変更したパーマリンクのURL一覧を取得します。

先ほどと同じように、左メニューの【ツール】から【List Urls】をクリックし、【Download CSV】ボタンをクリックして、データをダウンロードします。

CSVのデータは上から順番が全く同じで、URLのデータだけが変更されているので、ダウンロードした2つのCSVを利用して、旧ページURLと新しいページURLのデータを作成します。

スプレッドシートの名前は【URL-change】などにして、どれがどのデータなのかわかるようにしておきましょう。

WordPress パーマリンクの変更

こちらのデータには、左に【source】の列をつくって古いURLをペーストし、右に【target】の列を作って新しいURLをペーストします。

同じURLを削除

続いて重要なのが、古いURLと新しいURLが同じもの(行)を削除すること。

例えば、固定ページでもともとアルファベット表記だったものは、新しいURLも同じになるので、【source】と【target】のデータが同じになります。
このような重複したURLについて、列を見比べながら、行削除していきます。

この作業を忘れると、同じURLに301リダイレクトを送ることになるので、リダイレクトループに陥り、サーバーに大きな負担をかけることになります。
もちろん、サイトが表示されないなどの不具合に陥る可能性もあるので、これはしっかりとチェックしておきましょう。

重複URLがなくなれば【カンマ区切りのCSV】で書き出します。

ちなみに、この作業はGoogleスプレッドシートやWindowsやMacのCSVのエンコードをUTF-8でできるソフトを使うのがベストです。

なぜならば、エクセルでも【カンマ区切りのCSV】で書き出せるのですが、エクセルを使ってやってしまうとエンコードがShift-JISになってしまい、データ読み込みの段階でエラーが起こる可能性があるからです。

実は勝手に301リダイレクトされている説

いよいよ【Redirection】を使ってリダイレクトの処理を行うわけですが、ここでふと疑問に思ったんです。

マスターU

古いURLって、もうアクセスできなくなって、404エラーを返しているのかな?
ちょっと一回アクセスしてみよっと!

てな感じで、こちらのURLにアクセスしてみたんです。

https://udemyfun.com/?p=2083

するとなんということでしょう!

新しいURLにリダイレクトされているではありませんか!

で、最初にCSVで書き出していたデータをもとに、古いURLに次々とアクセスしてみると、あら不思議!すべてのページで新しいURLにリダイレクトされていたんです。

つまり、WordPressが進化したのか、パーマリンクの変更に伴う301リダイレクトの機能が備わっているという事実が判明したわけですね。

WordPressの長ったらしいレファレンスを読み込む気はないので、この考え方が正しいかどうかは保証できませんが、少なくとも現行のWordPress(WordPress 5.3.2)では、プラグインを使わなくても、【基本】のパーマリンクから【投稿名】へのパーマリンクの変更は、きちんと301リダイレクトを送ってくれるようです。

他のパターンの変更は試していないので、どうなるかはわかりませんので、やる場合は自己責任でどうぞ!

という具合に、【Redirection】を使う必要もなくパーマリンクの変更ができてしまったので、ほんと

準備にかけた時間を返してくれー!

と思いながら、この記事を書いていたというわけです。

Search Consoleにサイトマップを送信

最後に忘れてはいけないのが、Search Consoleでサイトマップを送信して、変更されたURLをGoogleに認識してもらう必要があります。

そのままほっておいても、賢いGoogleさんのことですから、いつの日にかはきちんとインデックスしてくれると思いますが、サイトの評価が下がらないようにきちんと「変更されたURLはこれですよ~」とお知らせしておいたほうがいいのは間違いありません。

プラグインでサイトマップを作成してくれるものがあるので、それを使ってもいいですが、私はJetpackの無料プランを活用してサイトマップを出力しています。

パーマリンクを変更したあとは、一度サイトマップの設定をオフにして再度オンしてサイトマップを作り直す必要があります。

WordPress パーマリンクの変更

サイトマップを作り直すのには、少し時間がかかるようで、すぐにはサイトマップができていませんでした。

少し時間をおいてからアクセスしてみて、サイトマップが出来上がっていれば、Search Consoleにサイトマップを送信しましょう。

WordPresのパーマリンクの設定は重要

ということで、長々と紹介してきましたが、最終的に

普通にパーマリンクの変更をしても大丈夫

という結論になりました。

とはいえ、ほんとにきちんとできているかどうかの保証はできないので、WordPressのパーマリンクの変更は自己責任で行ってください。

あと、パーマリンクは変更されて、古いURLからのリダイレクトもされていますが、最終的には各記事の中にある内部リンクも変更したほうがいいでしょう。

こちらはあまり急がないので、記事のリライトをしながらのんびりと気づいたときに変更していくことにしています。

なにかあってからでは遅いので、くれぐれもサイトのバックアップは忘れずに!