パーマリンクにカテゴリーを入れてはいけない!URL変更したらエラーで地獄を見た話

テーマデザイン弄りにはまり、記事を数日書かなかったひめたそん@himetasonです。
そろそろ一回落ち着きます。

Permalink Redirectでリダイレクトそして予期せぬエラー

気軽に始められるブログ運営。
最近は僕の周りでも立ち上げる人が増えている。

ブログを運営しているといつかやってくる、方向転換とカテゴリーの見直し
長期で運営するほど方向性が曖昧になり、気づけばカテゴリーが増えていたりする。
改めて再構築するときにカテゴリーの追加、削除など整理したくなるものだ。

僕も最近大きな見直しを行なっている。
このブログの場合だと方向転換を3度くらいした。
今回ブログの大掃除をする際にやらかしたことがあるのだ。

パーマリンク設定を「カテゴリー/タイトル」にしていた

このブログを始めた頃、調べながら手探りでWordPressを立ち上げ。
そのとき僕が見た参考にした記事にパーマリンクはカテゴリー/タイトルがおすすめと書いていた。
何も考えずにその通りに設定し今までこのブログを運営していたのだ。

そして今カテゴリーの見直し、変更を行うことを決意し壁にぶつかったのだ。

カテゴリー変更すると記事のパーマリンクが変わってしまう

そもそもいらないカテゴリーもあったし、明らかに誤ったカテゴリーになっている記事もある。
本腰を入れて運営する上で見直し、整理は必須だ。
しかし何も考えずにカテゴリーを変更してしまった場合どうなるか説明しよう。

今までSNSなどで発信した記事URLが無効になる。
頑張ってGoogleにインデックスしてもらい検索に表示された記事も無効になる。
つまりSEOがリセットされてしまう。

まさに大惨事だ。
実際気付いてはいたのだが、上記のデメリットを考えて実行できずにいた。
だが今後もカテゴリー変更ができないのは正直無理である。
できるだけデメリットなく、パーマリンクをタイトルのみにしたい。

301リダイレクトで元のURLを活かしつつ変更する

SNSで発信したURL、インデクスされたURL。
つまり旧URLから新URLへリダイレクトすることにした。
それなら最小限のリスクでパーマリンクの変更を行える。
今まで頑張ってきたことが無駄になることだけは避けたい。

リダイレクトというと難しく感じるかもしれないが、非常に簡単に実行できた。
もし万が一パーマリンクを変更しなければいけなくなった場合参考にしてほしい。

WordPress用プラグイン「Permalink Redirect」を設定

このプラグインを作ってくれた作者に多大なる感謝を述べたい。
簡単な設定で全記事を新URLへリダイレクトしてくれた。

https://scott.yang.id.au/pages/permalink-redirect.html

こちらからプラグインをダウンロードしインストール。
僕はPHPの方をダウンロードした。
しかしそのまま使用すると302リダイレクト(一時的なリダイレクト)になってしまう。
そこで各種エディタでPHPを開き、

406行目あたりにあるfunction wp_redirect($location, $status=302)
の「302」の部分を「
301」に変更し保存。

これで301(恒久的)リダイレクトされるようになる。
後はFTPソフトなどでWordPressのプラグインフォルダにアップロード。
プラグイン設定から有効化すればプラグインの準備は完了だ。

後は各記事のスラッグを設定しておかないと変更後のURLが崩れるようだ。
僕は元々すべて手動で設定していたが、やっていない人は入力しておこう。
クイック編集から入力できるので記事数が多くてもそこまで大変じゃないと思う。

パーマリンク設定の変更を実施

意を決してパーマリンクの変更を行おう。
正直怖かったが今後のためだ。
僕の場合はドメイン/カテゴリー/タイトル→ドメイン/タイトルというシンプルな構成にした。
これで後々自由にカテゴリー変更ができる。
WordPressの設定でパーマリンクを変更したら即Permalink Redirectの設定へ。

Old Permalink〜の欄に旧パーマリンク設定を入力。
画像は僕の環境でのスクリーンショットだからカテゴリー/タイトルの場合である。
各々の元のパーマリンク設定を入力しよう。
そしてUpdate Optionsをクリックすれば完了である。
緊張はするが非常に簡単である。

設定した後は試しに検索やSNSのリンクからリダイレクトされてることを確認。
無事アクセスできて一安心。
試しに一度プラグインをオフにしたら404表示になったのでしっかり機能しているようだ。

ここで終わらないのが僕である。トラブル発生!

普通ならこれで無事終わってよかったね!で終わる。
だがしかし、僕の環境ではトラブルが起きた。
各記事を開くとロードが終わらない。
そして重い。
色んなブラウザや端末で見てもロードは終わらないし重い。
挙げ句の果てにはフリーズする始末。
僕は大混乱した。
このままでは見にきてくれる人に迷惑がかかる。
徹夜を決め込み原因探求を急いだ。

記事内の過去記事への内部リンクが原因と判明

色々試した結果過去記事への記事内リンクが原因と判明。
全て消したらエラーは出ないことが確認できた。
確かにURLを変えたわけだからリダイレクトされていると言ってもおかしくなるだろう。
かなり手間だが新しいURLに変更すれば直ると思った。

新URLに変更しても直らない暴走記事たち

これは想定外だった。
新URLを貼ったらまた暴走するのである。
リダイレクトプラグインのせいで重くなっているのかもしれない。
そう思ってまたオフにしてみるも変わらない。
過去記事URLが原因は明らかなのだが解消方法がわからない。
いっそ内部リンクをオール削除するか検討した。

プラグインのPz-LinkCardを使うことで解決

元々WordPress純正の記事内ブログカードは不安定だった。
いっそのこと過去記事もPz-LinkCardを使用してリンクすることに。
尋常じゃない量で地獄だったが無事全記事貼り直しを完了。
記事の暴走も収まった。
Chromeの検証でもエラーは一つもなくなり一件落着である。

結局根本的な原因は不明。サーバーのキャッシュ機能の問題か

なぜこんなことになったのかは今でもわからないが、疑っているのはサーバー。
僕の使うサーバーはwpxサーバーというなのだが、高速化するキャッシュ機能が付いている。
急な大量のパーマリンク変更でキャッシュに不整合が起きてリンクがおかしくなった。
という根拠もない予想を立てているが未だ不明なので聞き流していただきたい
現在は正常にブログは稼働している。

まとめ

というわけで何かすると毎度トラブルが起きるのが僕です。

wpXクラウドへサーバー引っ越しと無料の独自SSL化!同時にしたら大変な思いをした話

こんな参事や手間を体験することがないようにしよう。
これからブログを立ち上げる人はパーマリンクにカテゴリーを含めないことをオススメする。
カテゴリーの見直しはブログを長期運営する上で必ずやってくると思う。
そんな時に僕のような苦労をしなくて済む。

そしてもしパーマリンクの変更を余儀なくされた人たちへ。
僕の環境だけかもしれないが記事内リンクに不具合が起きることがある。
実行する前に見直しや訂正、削除を検討した方が安心だ。
ブログが消滅してしまうかというくらい涙目になった。

後に苦労しないようにしっかり検討してパーマリンクを決めよう。

ではまた!