wordpressのパーマリンク設定が変更されたので.htaccessを使って301リダイレクトした話
WordPress5.4.1からパーマリンクの設定が変わった
私が気付いたのは5月1日頃、自分のブログの個別ページをクリックしても画面が表示されない。
ブログ、どこぶっ壊したのか個別ページが見れなくなっとる なんだこれ
— あさい (@LkDDrE1FE2RPuVY) May 1, 2020
最初はブログのテーマを何かミスったか?と思ったものの、テーマ名でTwitter検索しても特段問題が見られなかった。
その後検索したところ、ワードプレスのパーマリンク設定が変更されていることが発覚。
はてなブログから移転した人などが使っている、
/entry/%year%/%monthnum%/%day%/%hour%%minute%%second%
この形のパーマリンクに設定していると、今回のワードプレスのバージョンからアーカイブページとして認識されるらしい。
対処法としては現状バージョンダウンかパーマリンクの変更をするのどちらか。
今後のことを考えてパーマリンクの変更を行うことにした。
で、現在タイトルを付けるのすら面倒くさいのに真面目にパーマリンクの名称を付けるとも思えないし、今後カテゴリの変更を行う可能性が高いため、新規は/%post_id%/とした。archiveとかもいらん。そんなもんいちいちいらん。
ここで出てくる問題が、既に存在している記事にアクセスされた場合に404を返してしまうということだ。
「パーマリンク 変更」などで検索した結果、下記の対処法を見つけた。
- プラグインを使用する
- 「Redirection」を使う
- 「Permalink Redirect」を使う
- .htaccessでリダイレクトをかける
- 「yoast」というサイトでリダイレクト用のコードを出力して.htaccessに書き足す
- 現在のアドレスを全部出力して変換用コードを自力で作成し.htaccessに書き足す
私は一番下の「現在のアドレスを全部出力して変換用コードを自力で作成し.htaccessに書き足す」を行った。
というか、これ以外のやり方は全部失敗した。うまくリダイレクトしねえ。
やり方については下記。
.htaccessでリダイレクトをかける
現在のアドレスを全部出力して変換用コードを自力で作成し.htaccessに書き足す
★最終的にこれを採用
使用する方法は、301リダイレクトという方法。
要するに.htaccessというファイルに、現在のアドレスと新規アドレスを記入し、こちらにアクセスされたらこっちにとばしてくれと頼むというやり方。
最終的には、
Redirect permanent 「変更前の相対リンク(/wordpress/年/月/日/時間分秒)」 「新しいアドレス絶対リンク(サイトアドレスフル)
という形に変更する。
なお、エクセルを持っていない人のやり方なので、エクセル持ってる人はきっともっと簡単にできる。
まずは「Export All URLs」というプラグインで現在のアドレスとページのNoを書き出す。
「Additional Data:」をPostIDsとURLsにすることで、現在のURLとポストの番号が取得出来る。
出来たCSVがこちら。私はエクセルを持っていないので若干外見が違うが見た目はきにするな。
これを編集する。
まずは作業しやすくするためgoogleスプレッドシートで開く。
D1セルに自分のサイトのURLを入力。
D2セルに
=$D$1&"/"&A2&"/"
と記入。
このまま下へぐーっと引っ張っていくと新規アドレスが作成される。
続いてテキストエディタで元々のCSVを開く。
うちのサイトの場合は旧アドレスから「https://houchi.work」の部分を削除する必要があったので、テキストエディタで一括置換。
置換元「https://houchi.work」置換後「」で変更をかけるとこの形になる。
続いて再度googleスプレッドシートに戻る。
今テキストエディタで作った/wordpress/年/月/日/時間分秒のアドレスをB列に上書きでコピー。
続いてA列には全て「Redirect permanent」と入力する。
いらなかった空白のC列を削除。
出来上がったスプレッドシートをコピーしてテキストエディタに持ってくる。
タブになっている場所を半角スペースで置換する。
これをワードプレスの.htaccessに全部ぺたーっと貼り付けて、アップロードして終わり。
一番手間がかかりそうだなと思ったけれど、これしか成功しなかったのでもうこういうことでいい。