【激怒】WordPress勝手に日付パーマリンク個別ページでなく日付アーカイブ問題!を301リダイレクト

347views/投稿 2020-05-02/更新 2020-05-02

勝手にWordPress 5.4.1のアップデートのタイミング2020年4月30日〜2020年5月1日で、日付のみパーマリンク設定だと個別ページ(single.php)ではなく、日付アーカイブページとして表示される問題が発生。

はてブからWordPress移行の方は日付パーマリンクを使っている場合が多く、突然の仕様変更にダウングレードなどの対応をされています。

WordPress5.4.1にアップデートした、またはWordPress5.4から自動アップデートされてしまった場合はチェックしてください。

WordPress 5.4.1だけじゃないダウングレード意味なさそうな予感

手持ちの古いサイトがあったので、その自動アップデートされたWordPressサイトも見てみました。

  • WordPress 3.9.31 へ自動更新しました。
  • WordPress 4.6.18 へ自動更新しました。
  • WordPress 4.7.17 へ自動更新しました。
  • WordPress 5.2.6 へ自動更新しました。
  • WordPress 5.3.3 へ自動更新しました。

検証したところ日付パーマリンクは、全部アーカイブページ表示になります。

日付のみで構成されたパーマリンクが対象のようで、post_idとかが含まれていれば大丈夫でした。

個別ページ(single.php)は、無視されるというかホームなどの一覧からクリックしても個別アーカイブになるだけです。

個別アーカイブページというかテーマのarchives.phpが適用される感じで、なければindex.phpが継承として適用されるのかもです。いずれにしてもアーカイブなのでsingle.phpではなく、WPログイン時の黒いバーにも「投稿の編集」は出てきません。

/%year%/%monthnum%/%day%/%hour%/%minute%/%second%/

とパーマリンクしていた方は多いのではないでしょうか?

日付のみのパーマリンクは、年月日時分秒の秒(%second%/)も含めないと設定ができない仕様になっていて、同分で投稿したらパーマリンクが被ってしまうから、秒ならさすがに被らないからという理由だと思っていました。

予想するに、「そろそろ秒でも被る可能性あるから今回のタイミングで強制移行」と決定したのではないでしょうか?

WordPress投稿は分までしか設定できず、秒は入力できないため公開を押した秒がパーマリンク末尾URLになる。試しに同じ分にして同じ秒を狙って公開とかしてみたが、被らない、でも60秒なので限界は自ずと60投稿となるので、ますます更新多くなる今後に対応したのか?という予想です。

それか、リリースノートには「特定のプライベートな投稿が認証されていない状態で閲覧できてしまう問題」とあるので、秒パーマリンクだといろいろまずいので強制変更したとか?

今回のタイミングのリリースノートを見てみました。

はい、ちょっと何言ってるかよくわかりませんが、

3.7 以降のすべての WordPress バージョンでも以下のセキュリティ問題が修正されています。

5.4.1バージョンだけではないのは、自分でも確かめました。

だから、マイナーバージョンアップは自動更新されてしまうので、5.4.0にダウングレードしたところで5.4.2になれば、この問題は解消されるとも思い辛い。

マジで、パーマリンク強制変更なんて重大なアップデートは、もっとわかりやすく発表しろ!または、事前に告知しろよ!というのが普通の意見かと。

WordPressダウングレードプラグイン

ダウングレードできるプラグインがあります。

WP Downgrade

WP Downgrade | Specific Core Version

プラグイン新規追加から検索すると出てきますので、有効化してセッティングします。

WP Downgrade Options

「5.3.3」だったので「5.3」にして、変更を保存 クリックします。
「5.4.1」からなら「5.4」でOKでしょう。

WP Downgrade Options 2

最後に、「Up-/Downgrade Core」をクリックするとダウングレードできます。

また、試したところ5.3.3から5.2へのダウングレードもできました。メジャーアップデートもダウングレード可能なすごいプラグイン!ですね。

しかし、前述の通りどのバージョンのアップデートもこの問題が起こることから、秒いれとけば個別ページを損切りしたとしか思えませんので、また自動マイナーバージョンアップがあれば、このダウングレード作業をしなくてはならいと予想、あくまで推測です。

WordPress日付パーマリンク問題を301リダイレクトする方法

ということで、当ブログは日付のみパーマリンク(秒パーマリンク)を採用してましたが、post_id(/%post_id%)のみのパーマリンクに変更を決意。

.htaccessに301リダイレクトを記述して、秒パーマリンクとはおさらばすることに。

post_idパーマリンク

カスタム構造
ドメイン/%post_id%

を採用することにしました。

プラグインExport All URLsでURLを全部だしExcelでRedirect permanent

Export All URLs

Export All URLs

プラグイン新規追加から検索して、Export All URLsと検索すれば出てきますので有効化。

Postsが投稿なので選択、Post IDs/URLsは必須なのでチェック、Published公開済みを選択、CSVを選択してExport Nowをクリックすると、上部にClick hereが出るので右クリックでダウンロードします。

csvをExcelで開いて、301リダイレクトの記述をしていきます。

Redirect permanent ルートパス リダイレクト後URL

になるようにExcelで編集して、.htaccessに書いてアップロードすればリダイレクトされます。

当ブログだとこうなります。

Redirect permanent /ety/20140519025516/ https://webskillup.com/2298

または、

Redirect 301 /ety/20140519025516/ https://webskillup.com/2298

Redirect permanentでもRedirect 301でも同じ301リダイレクトらしいです。

私の場合permanentを使いました。

# 301
RewriteEngine on
Redirect permanent /ety/20140519025516/ https://webskillup.com/2298
Redirect permanent /ety/20150510092358/ https://webskillup.com/3603
Redirect permanent /ety/20150413145326/ https://webskillup.com/3516
Redirect permanent /ety/20141013235721/ https://webskillup.com/3058

…ダーッと全行長いですが.htaccesssに貼り付けます。

まとめ

WordPress個別ページがアーカイブページになってしまう問題、いきなり強行するのは本当にやめて欲しいものです。

ダウングレードは、一時しのぎに過ぎないと感じたので301リダイレクトに踏み切りました。もちろん記事のソーシャルのカウントは0になる。

パーマリンク変更は、超重要なことなので「必ず上司に確認」事項ですよ!自己責任で。

情報の通信量は右肩上がりにずっと増え続けるばかり。

WordPressで1分に61投稿される未来は想像できませんが、限界値であることは確かです。しかし、IoTでモノとモノであれば、61が限界では少ないイメージもできたりしますね。

お疲れさまでした!

関連おすすめ記事