WordPress 5.4で特定のパーマリンクで不具合が発生する件の対策

今回の調査では以下の順で行ってみた

  1. プラグインの全停止
  2. テーマの変更
  3. WordPressの再インストール
  4. WordPressのダウングレード

WordPressの再インストールやダウングレードは結構だるいしどのバージョンでどのような変化があるか調べるのには時間がかかるので、Dockerイメージを使用した。5.3にした段階で問題が解消された。

docker run \
  -e WORDPRESS_DB_HOST=database:3306 \
  -e WORDPRESS_DB_PASSWORD=password \
  -e WORDPRESS_DB_NAME=name \
  -e WORDPRESS_DB_USER=user -d -p 80:80 wordpress:5.3

WordPress 5.4 で立ち上げた複数のサイトとの差異はパーマリンクだった。パーマリンクを /entry/:yaer/:month/:day/:hour:minute:second というはてなブログ形式から /archives/:id へ変更した段階で問題が解消された。

ただしこの変更を行ってしまうとブログへのインデックスがすべてクリアされてしまう。別にいいけど上位に着ているページがしばらく404で表示されるのは大概的に親切ではないのでリダイレクトをすることにした。

パーマリンク変更時のリダイレクトはプラグインでも行える。Permalink Manager Proというのでできるんだけど結構高くて買った瞬間人生がおわりそうな金額だったので、しぶしぶSQLを書いて.htaccessに直書きすることにした。

SELECT 
  CONCAT(
    '/entry/',
    YEAR(post_date),
    '/',
    LPAD(MONTH(post_date), 2, '0'),
    '/',
    LPAD(DAY(post_date), 2, '0'),
    '/',
    LPAD(HOUR(post_date), 2, '0'),
    LPAD(MINUTE(post_date), 2, '0'),
    LPAD(SECOND(post_date), 2, '0')
  ) AS before_url,
  CONCAT("/archives/", ID) AS after_url
FROM wp1_posts
WHERE post_status = 'publish' AND post_type = 'post';

あとは.htaccessにこのように並べておくだけ。

RewriteRule ^entry/2020/05/01/181718$ /archives/2242 [L,R=301] 
RewriteRule ^entry/2020/05/05/202314$ /archives/2244 [L,R=301]         
RewriteRule ^entry/2020/05/06/202906$ /archives/2246 [L,R=301] 
RewriteRule ^entry/2020/05/07/204259$ /archives/2251 [L,R=301] 

個人的にはWordPressに対しては一切技術的な知識がなくても使えるってところを求めているので、なるべくWordPressに手を入れたくないと思っている。今回はしぶしぶやってみた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA